DSN_SORT_TABLE

ソート表 DSN_SORT_TABLE には、照会で必要なソート操作に関する情報が入っています。

プログラム固有のプログラミングインターフェース情報の開始。
推奨: システムで管理されているEXPLAINテーブルにデータを手動で挿入しないこと、および、不要となったEXPLAINテーブルのデータを削除する際には注意すること。 このデータは、 Db2 のEXPLAIN関数および最適化ツールのみで操作されることを意図しています。 一部の最適化ツールは、さまざまな EXPLAIN 表のインスタンスに依存しています。 そのようなツール用に作成されているデータや EXPLAIN 表のインスタンスを削除または除去しないように注意してください。

修飾子

変更の開始サブシステムまたはデータ共用グループには、ユーザー ID によって修飾されるこれらの表の複数インスタンスを含めることができます。 これらの表には、EXPLAIN ステートメントまたはバインドを発行する場合に、ステートメントのコスト情報が追加されます。 これらの表には、BIND コマンドまたは REBIND コマンドで EXPLAIN(YES) か EXPLAIN(ONLY) を指定した場合にも情報が追加されます。 SQL 最適化ツールも、ユーザー ID で修飾された EXPLAIN 表を作成する場合があります。 この表のインスタンスを作成するための SQL ステートメントは、SDSNSAMP ライブラリーのメンバー DSNTESC にあります。変更の終わり

サンプルの CREATE TABLE ステートメント

各 EXPLAIN テーブルのサンプル CREATE TABLE ステートメントはプレフィックス. SDSNSAMP ライブラリのメンバー DSNTESC にあります。 EXPLAINテーブルを現在の Db2 の形式にアップグレードするには、ADMIN_EXPLAIN_MAINTストアド・プロシージャを呼び出します。 ADMIN_EXPLAIN_MAINTは、EXPLAINテーブルを作成したり、現在の Db2 リリース用のフォーマットにアップグレードしたり、その他の保守作業を行うこともできます。 アクション入力パラメータを使用してこれらの各タスクを要求する方法については、 ADMIN_EXPLAIN_MAINTストアド・プロシージャを参照してください。 また、EXPLAINテーブルを現在の Db2 の形式にアップグレードするタスクのみを実行する場合は、ジョブDSNTIJXAを実行することもできます。 DSNTIJXA は REXX exec DSNTXTA を呼び出してアップグレードを実行する。 DSNTIJXA の実行に関する詳細については、「移行ステップ 25: EXPLAIN テーブルを現在の形式に変換する」を参照してください。

列の説明

次の表は、DSN_SORT_TABLE の列について説明しています。

表 1. DSN_SORT_TABLE の説明
列名 データ・タイプ 説明
QUERYNO 非 NULL の整数 解釈されるステートメントを識別する番号。 元になる値は、行のコンテキストに応じて異なります。
EXPLAIN ステートメントにより作成される行の場合
SELECT、 INSERT、 UPDATE、 MERGE、および DELETE のステートメント構文のオプション部分である QUERYNO 文節で指定された番号
EXPLAIN ステートメントにより作成されない行の場合
Db2 は、ソース・プログラム内の SQL ステートメントの行番号に基づく番号を割り当てます。

QUERYNO の値がソース・プログラム内のステートメント番号に基づく場合、32767 を超える値は 0 として報告されます。 ただし、まれに、値が固有であることが保障されない場合があります。

変更の開始SQL ステートメントがコンパイル済み SQL 関数、ネイティブ SQL プロシージャー、または拡張トリガーに組み込まれている場合に、QUERYNO 文節が指定されると、その値は Db2 によって使用されます。 それ以外の場合は、 Db2 が、コンパイルされたSQL関数、ネイティブSQLプロシージャ、またはアドバンスト・トリガ内のSQLステートメントの行番号に基づいて番号を割り当てます。変更の終わり

QBLOCKNO SMALLINT NOT NULL 照会内の各照会ブロックを識別する番号。 この番号の値は、特定の順序でもなければ、必ずしも連続していません。
PLANNO SMALLINT NOT NULL プラン番号 (照会ブロックで各ミニ・プランの識別に使用される番号)。
APPLNAME VARCHAR(24) NOT NULL 行のアプリケーション・プランの名前。 プランから実行される組み込み EXPLAIN ステートメント、またはプランのバインド実行時に解釈されるステートメントのみに適用される。 ブランクは、列が適用外であることを示します。

変更の開始SQLステートメントがコンパイルされたSQL関数、ネイティブSQLプロシージャ、または高度なトリガに埋め込まれている場合、この列は使用されず、空白になります。変更の終わり

PROGNAME VARCHAR(128) NOT NULL 解釈されているステートメントが含まれているプログラムまたはパッケージの名前。 組み込み EXPLAIN ステートメントと、プランまたはパッケージのバインド結果として 解釈されたステートメントに適用される。 ブランクは、列が適用外であることを示します。

変更の開始SQL ステートメントがコンパイル済み SQL 関数またはネイティブ SQL プロシージャーに組み込まれている場合、この列には、コンパイル済み SQL 関数またはネイティブ SQL プロシージャーの特定の名前が示されます。 SQLステートメントが高度なトリガーに埋め込まれている場合、この列にはトリガーの名前が含まれます。変更の終わり

COLLID VARCHAR(128) NOT NULL コレクションID:
'DSNEXPLAINMODEYES'
行は CURRENT EXPLAIN MODE 特殊レジスターの値に YES を指定するアプリケーションから発生する。
'DSNEXPLAINMODEEXPLAIN'
行は CURRENT EXPLAIN MODE 特殊レジスターの値に EXPLAIN を指定するアプリケーションから発生する。

変更の開始SQLステートメントがコンパイルされたSQL関数、ネイティブSQLプロシージャ、またはアドバンスト・トリガに埋め込まれている場合、この列には、コンパイルされたSQL関数、ネイティブSQLプロシージャ、またはアドバンスト・トリガのスキーマ名が表示されます。変更の終わり

SORTC CHAR(5) NOT NULL WITH DEFAULT 複合表のソートの理由を示します。 理由は以下の一連のバイトとして示されます。
  • 1 番目のバイトは、理由が GROUP BY の場合は「G」、それ以外の場合はブランクです。
  • 2 番目のバイトは、理由が JOIN の場合は「J」、それ以外の場合はブランクです。
  • 3 番目のバイトは、理由が ORDER BY の場合は「O」、それ以外の場合はブランクです。
  • 4 番目のバイトは、理由が固有性の場合は「U」、それ以外の場合はブランクです。
SORTN CHAR(5) NOT NULL WITH DEFAULT 新規表のソートの理由を示します。 理由は以下の一連のバイトとして示されます。
  • 1 番目のバイトは、理由が GROUP BY の場合は「G」、それ以外の場合はブランクです。
  • 2 番目のバイトは、理由が JOIN の場合は「J」、それ以外の場合はブランクです。
  • 3 番目のバイトは、理由が ORDER BY の場合は「O」、それ以外の場合はブランクです。
  • 4 番目のバイトは、理由が固有性の場合は「U」、それ以外の場合はブランクです。
SORTNO SMALLINT NOT NULL ソートのシーケンス番号。
KEYSIZE SMALLINT NOT NULL ソート・キーの長さの合計。
ORDERCLASS INTEGER NOT NULL IBM® 内部使用専用。
EXPLAIN_TIME TIMESTAMP NOT NULL EXPLAIN 情報が収集された時刻:
キャッシュされたすべてのステートメント
フル精度のタイム・スタンプ値形式での、ステートメントがキャッシュに入れられた時点。
キャッシュされていない静的ステートメント
フル精度のタイム・スタンプ値形式での、ステートメントがバインドされた時点。
キャッシュされていない動的ステートメント
時刻の CHAR(16) 表現に相当する値に 4 つのゼロが付加された形式での、EXPLAIN が実行された時点。
GROUP_MEMBER VARCHAR(24) NOT NULL EXPLAINを実行した Db2 のメンバー名。 EXPLAINが実行された際に、 Db2 サブシステムがデータ共有環境になかった場合、この列は空白になります。
SECTNOI INTEGER NOT NULL WITH DEFAULT ステートメントのセクション番号。 値は SYSPACKSTMT または SYSSTMT の表の同じ列から取得され、表を結合してそのステートメントのアクセス・パスを再構成するために使用することができる。 この列は静的ステートメントのみに適用される。 -1 のデフォルト値は、 DB2® 9 またはそれ以前で取得されたEXPLAIN情報を示します。
VERSION varchar(122)notNULL、デフォルト パッケージのバージョン ID。 パッケージから実行された組み込みの EXPLAIN ステートメントと、パッケージのバインド時に Explain されたステートメントにのみ適用されます。

変更の開始この値がブランクでない場合、この値は、この EXPLAIN 表の行の作成に使用されたパッケージの VERSION 値と同じです。変更の終わり

変更の開始ステートメントの値が空白です。変更の終わり変更の開始
  • 基本トリガーのパッケージ (TYPE='T')
  • SQL 処理オプション VERSION なしでプリコンパイルされたアプリケーションのパッケージ
  • VERSION 値に空ストリングを指定してプリコンパイルされたパッケージ (TYPE=ブランク)
変更の終わり 変更の開始SQLステートメントがコンパイルされたSQL関数またはネイティブSQLプロシージャに埋め込まれている場合、この列は関数またはプロシージャのバージョン識別子を示します。 SQLステートメントが高度なトリガーの本文に埋め込まれている場合、この列は使用されず、空白になります。変更の終わり
EXPANSION_REASON CHAR(2) NOT NULL WITH DEFAULT
この列は、アーカイブ表またはテンポラル表を参照するステートメントのみに適用されます。 他のステートメントについては、この列はブランクです。

CURRENT TEMPORAL BUSINESS_TIME 特殊レジスター、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスター、および SYSIBMADM.GET_ARCHIVE 組み込みのグローバル変数の効果を示します。 これらの項目は、BUSTIMESENSITIVE、SYSTIMESENSITIVE、および ARCHIVESENSITIVE バインド・オプションによって制御されます。

以下の条件のいずれかに該当する場合、Db2 は特定の構文を暗黙的に照会に追加します。
  • SYSIBMADM.GET_ARCHIVE グローバル変数が Y に設定され、ARCHIVESENSITIVE バインド・オプションが YES に設定されている。
  • CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターが非 NULL であり、BUSTIMESENSITIVE バインド・オプションが YES に設定されている。
  • CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターが非 NULL であり、SYSTIMESENSITIVE バインド・オプションが YES に設定されている。
この列は、次のいずれかの値を取ります。
'A'
照会には、SYSIBMADM.GET_ARCHIVE 組み込みグローバル変数の結果として暗黙照会変換が含まれています。
'B'
照会には、CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの結果として暗黙照会変換が含まれています。
'S'
照会には、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターの結果として暗黙照会変換が含まれています。
'SB'
照会には、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターと CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの結果として暗黙照会変換が含まれています。
ブランク
照会には暗黙照会変換が含まれません。
変更の開始 PER_STMT_ID 変更の終わり 変更の開始 bigint not null 変更の終わり 変更の開始 Db2 カタログテーブル内のSQLステートメントの永続的なステートメント識別子。
例えば、この列は、SQL ステートメントを識別する以下のカタログ表の列に対応します。
  • STMT_ID in SYSIBM.SYSPACKSTMT (パッケージ内の SQL ステートメントの場合)
  • SDQ_STMT_ID in SYSIBM.SYSDYNQUERY (固定化された動的 SQL ステートメントの場合)。
変更の終わり
変更の開始AP_PLANID変更の終わり 変更の開始CHAR(16) FOR BIT DATA変更の終わり 変更の開始拡張タイムスタンプ値の形式で、SQL文のBINDまたはPREPARE最適化用の一意の識別子。変更の終わり
プログラム固有のプログラミングインターフェース情報を終了します。