SYSQUERYPLAN カタログ表

SYSQUERYPLAN 表には、SYSIBM.SYSQUERY 表内の照会に関するプラン・ヒント情報が含まれています。 これは、QUERYID 列によって SYSQUERY 表と相互に関連付けられています。 照会の場合、SYSQUERYPLAN 表に保管されているプラン・ヒントのコピーは、COPYID 列の値によって区別され、最大で 3 つまで可能です。 スキーマは SYSIBM です。

表 1. SYSIBM.SYSQUERYPLAN 表の列の説明
列名 データ・タイプ 説明 使用
QUERYID
bigint
not null
on delete
cascade
照会のユニーク ID。 QUERYID の値は、SYSIBM.SYSQUERY 表の QUERYID 列の値に対応しています。 G
COPYID
SMALLINT
非 NULL
この行の照会のプラン・ヒントのバージョン。
0
プラン・ヒントの現行バージョン。
1
PLAN STABILITY によって使用されるプラン・ヒントの以前のバージョン。
2
PLAN STABILITY によって使用されるプラン・ヒントのオリジナル・バージョン。
G
PLAN_VALID
char(1)
not null
プラン・ヒントが有効かどうかを示します。
N
プラン・ヒントは無効です。
Y
プラン・ヒントは有効です。
G
IBMREQD
CHAR(1)
NOT NULL
Yの値は、その行に Db2 製品コードが提供されたことを示します。 その他のすべての値については、 リリース依存指標を参照してください。

このフィールドの値は、リリース従属関係を示す信頼できる標識ではありません。

G
QBLOCKNO
SMALLINT
NOT NULL
照会内の各照会ブロックを識別する番号。 この番号の値は、特定の順序でもなければ、必ずしも連続していません。 G
PLANNO
SMALLINT
非 NULL
QBLOCKNO に示された照会が処理されたステップ の番号。 この列はステップが実行された順序を示す。 G
METHOD
SMALLINT
NOT NULL
ステップに使用される結合方式を示す番号。
0
このステップの表は、最初にアクセスされる表、アクセスされた直前の表の続き、または使用されない表である。
1
ネスト・ループ結合が使用される。 現行の複合表の行ごとに、新規表の一致する行を検索して結合する。
2
マージ・スキャン結合が使用される。 現行の複合表と新規の表を結合列の順序でスキャンし、一致する行を結合する。
3
ORDER BY、 GROUP BY、 SELECT DISTINCT、 UNION、 INTERSECT、 EXCEPT、 比較述部、 または IN 述部でソートが必要。 このステップは新規表にはアクセスしない。
4
ハイブリッド結合が使用されました。 新規表の結合列における行の順序で、 現行の複合表をスキャンする。 新規表には、リスト・プリフェッチを使ってアクセスする。
G
CREATOR
VARCHAR(128)
NOT NULL
このステップでアクセスされる新規表の作成者。METHOD が 3 の場合にはブランク。 G
TNAME
VARCHAR(128)
NOT NULL
以下のいずれかのオブジェクトの名前。
  • マテリアライズ照会表
  • 作成済み一時表または宣言済み一時表
  • マテリアライズ・ビュー
  • マテリアライズ表式
METHOD が 3 の場合、値はブランクです。 列には、DSNWFQB(qblockno) の形式で表の名前が含まれることもあります。 DSNWFQB(qblockno) は、マテリアライズされる UNION ALL、INTERSECT ALL、EXCEPT ALL または外部結合 の中間結果を表すのに使用されます。 ビューがマージされた場合、ビュー名は表示されません。 DSN_DIM_TBLX(qblockno) は、スター型結合ディメンション表の作業ファイルを表すのに使用されます。
G
SMALLINT
NOT NULL
内部使用専用です。 I
ACCESSTYPE
CHAR(2)
NOT NULL
新規表にアクセスする方式。
A
アクセラレーテッド照会表 (AQT) アクセス。
DI
最終 DOCID リストを戻すために複数の DOCID リストの論理積による
DU
最終 DOCID リストを戻すために複数の DOCID リストの和集合による
DX
DOCID リストを戻すために、ACCESSNAME で指定される索引の XML 索引スキャンによる
E
行変更タイム・スタンプ列を使用して直接行アクセスによる
H
ハッシュ・オーバーフロー索引による (ACCESSCREATOR および ACCESSNAME で指定)
I
索引による (ACCESSCREATOR および ACCESSNAME で指定)
IN
マッチング述部が IN 述部を含み、IN リストがメモリー内の表からアクセスされる場合は、索引スキャンによる
I1
1 フェッチ索引スキャンによる
M
複数索引スキャン (MX、MI、MU、または MH が続く) を使用
MH
ACCESSNAME に指定されたハッシュ・オーバーフロー索引を使用
MI
複数索引の論理積を使用
MU
複数索引の和集合を使用
MX
ACCESSNAME で指定された索引の索引スキャンによる。 アクセス方式 DX、DI、または DU の後にアクセス方式 MX が続く場合、DX、DI、または DU によって戻される DOCID リストを使用して、DOCID 索引によって表がアクセスされる。
G
ACCESSTYPE (続き)  
N
  • 索引スキャンによる (一致する述部に IN キーワードが含まれている場合)
  • 索引スキャンによる (Db2 が IN キーワードを使用して照会を再書き込みする場合)
  • IN キーワードによるハッシュ・アクセスを使用
  • Db2 がINキーワードを使用してクエリを書き換える際にハッシュアクセスによって
NR
範囲リスト・アクセス。
P
動的ペアワイズ索引スキャンによる
R
表スペース・スキャンによる
RW
マテリアライズされたユーザー定義表関数の結果の作業ファイルスキャンによる
V
SELECT 内の INSERT ステートメントのバッファーによる
ブランク
現在行には適用されない
 
MATCHCOLS
SMALLINT
NOT NULL
ACCESSTYPE I、I1、N、NR、MX、または DX の場合、索引スキャンで使用される索引キーの数。それ以外の場合は 0。 G
ACCESSCREATOR
VARCHAR(128)
NOT NULL
ACCESSTYPE I、I1、N、NR、MX、または DX の場合、索引の作成者。それ以外の場合は 0。 G
ACCESSNAME
VARCHAR(128)
NOT NULL

ACCESSTYPE I、I1、H、MH、N、NR、MX、または DX の場合、索引の名前。ACCESSTYPE P の場合、DSNPJW(mixopseqno) は MIXOPSEQNO 内の開始ペアワイズ結合レグ。それ以外の場合は、ブランク。

G
INDEXONLY
CHAR(1)
NOT NULL
索引にアクセスするだけでステップの実行に十分であるかどうかの表示。または、データへのアクセスも必要かどうかの表示。
Y
はい
N
いいえ
G
SORTN_UNIQ
CHAR(1)
NOT NULL
重複行を除去するために新規表がソートされるかどうかの表示。
Y
はい
N
いいえ
G
SORTN_JOIN
CHAR(1)
NOT NULL
結合方式 2 または 4 のために 新規表がソートされるかどうかの表示。
Y
はい
N
いいえ
G
SORTN_ORDERBY
CHAR(1)
NOT NULL
ORDER BY により新規表 がソートされるかどうかの表示。
Y
はい
N
いいえ
G
SORTN_GROUPBY
CHAR(1)
NOT NULL
GROUP BY により新規表 がソートされるかどうかの表示。
Y
はい
N
いいえ
G
SORTC_UNIQ
CHAR(1)
NOT NULL
重複行を除去するために複合表 がソートされるかどうかの表示。
Y
はい
N
いいえ
G
SORTC_JOIN
CHAR(1)
NOT NULL
結合方式 1、2 または 4 のために 複合表がソートされるかどうかの表示。
Y
はい
N
いいえ
G
SORTC_ORDERBY
CHAR(1)
NOT NULL
ORDER BY 文節または比較述部に対して 複合表がソートされるかどうかの表示。
Y
はい
N
いいえ
G
SORTC_GROUPBY
CHAR(1)
NOT NULL
GROUP BY 文節のために複合表 がソートされるかどうかの表示。
Y
はい
N
いいえ
G
TSLOCKMOD
CHAR(3)
NOT NULL
新規表、またはその表スペースや表スペース・パーティションの いずれかに設定するロックのモードの指示。 バインド時に分離を判別できる場合は、次の値が示される。
IS
意図的共有ロック
IX
意図的排他ロック
S
共用ロック
U
更新ロック
X
排他ロック
SIX
共有意図的排他ロック
N
UR 分離 (ロックなし)
バインド時に分離レベルが判別できない場合、実行時に分離レベルによって判別されるロック・モードが 以下の値により示される。
NS
UR 分離の場合はロックなし。CS、RS、または RR の場合は S ロック。
NIS
UR 分離の場合はロックなし。CS、RS、または RR の場合は IS ロック。
NSS
UR 分離の場合はロックなし。CS、または RS の場合は IS ロック、RR の 場合は S ロック。
SS
UR、CS、または RS 分離の場合は IS ロック、RR の場合は S ロック。

この列のデータは右そろえ。 例えば、IX の場合、ブランクの後に I と X が続く。 列にブランクが含まれる場合、ロックは獲得されていない。

ACCESSTYPE 列のアクセス方式が DX、DI、または DU である場合、XML 索引ページでラッチは獲得されず、新規基本表のデータ・ページまたは行でロックは獲得されず、XML 表と対応する表スペースでも獲得されない。 この場合、TSLOCKMODE の値はブランク。

G
PREFETCH
CHAR(1)
NOT NULL
プリフェッチによってデータ・ページが事前に読み取られるかどうかの表示。
D
オプティマイザーは動的プリフェッチを予期する
S
純粋な順次プリフェッチ
L
ページ・リストを使用したプリフェッチ
ブランク
不明またはプリフェッチなし
G
COLUMN_FN_EVAL
CHAR(1)
NOT NULL
SQL 集約関数が評価される時点。
R
データを表または索引から読み取るとき
S
GROUP BY 文節の条件を使ってソートするとき
ブランク
データを検索またはソートしたあと
G
MIXOPSEQ
SMALLINT
NOT NULL
複数索引操作におけるステップのシーケンス番号。
1, 2,... n
複数索引プロシージャーのステップの場合 (ACCESSTYPE は MX、MI、MU、DX、DI、または DU)、または範囲リスト・アクセスのシーケンス番号 (ACCESSTYPE は「NR」) の場合。
0
その他の行の場合。
G
ACCESS_DEGREE
SMALLINT
照会でアクティブになった並列タスクまたは操作の数。 この値はバインド時に 判別され、実行時の実際の並列操作数とは異なる可能性がある。 ホスト変数が使用される場合、この列は 0 になる。 43 列未満のプラン表を使用してプランまたはパッケージをバインドした場合、この列には NULL 値が入る。 それ以外の場合は、参照する方式が適用されなければ NULL が入る。 G
ACCESS_PGROUP_ID
SMALLINT
新規表にアクセスするときに使用する並列グループの ID。 並列グループとは、同じ数の並列タスクが含まれている連続操作のグループで、 並列に実行される。 この値はバインド時に決定され、実行時に変更される可能性があります。プランまたはパッケージが43列未満のプラン・テーブルを使用してバインドされた場合、この列にはNULL値が含まれます。 それ以外の場合は、参照する方式が適用されなければ NULL が入る。 G
JOIN_DEGREE
SMALLINT
複合表と新規表を結合するときに使用する並列の操作またはタスクの数。 この値はバインド時に決定され、 ホスト変数が使用される場合は 0 になることがある。 実行時の実際の並列の操作またはタスクの数は、 それとは異なる可能性がある。 43 列未満のプラン表を使用してプランまたはパッケージをバインドした場合、この列には NULL 値が入る。 それ以外の場合は、参照する方式が適用されなければ NULL が入る。 G
JOIN_PGROUP_ID
SMALLINT
複合表と新規表を結合するときに使用する並列グループの ID。 この値はバインド時に判別され、実行時には値が異なることがある。 43 列未満のプラン表を使用してプランまたはパッケージをバインドした場合、この列には NULL 値が入る。 それ以外の場合は、参照する方式が適用されなければ NULL が入る。 G
SORTC_PGROUP_ID
SMALLINT
複合表の並列ソートのための 並列グループ ID。 43 列未満のプラン表を使用してプランまたはパッケージをバインドした場合、この列には NULL 値が入る。 それ以外の場合は、参照する方式が適用されなければ NULL が入る。 G
SORTN_PGROUP_ID
SMALLINT
新規表の並列ソートのための並列グループ ID。 43 列未満のプラン表を使用してプランまたはパッケージをバインドした場合、この列には NULL 値が入る。 それ以外の場合は、参照する方式が適用されなければ NULL が入る。 G
parallelism_
モード
CHAR(1)
バインド時に使用した並列処理がある場合、そのタイプ。
I
照会入出力並列処理
C
照会 CP 並列処理
43 列未満のプラン表を使用してプランまたはパッケージをバインドした場合、この列には NULL 値が入る。 それ以外の場合は、参照する方式が適用されなければ NULL が入る。
G
merge_
join_
cols
SMALLINT
マージ・スキャン結合 (方式 2) で結合された列の数。 43 列未満のプラン表を使用してプランまたはパッケージをバインドした場合、この列には NULL 値が入る。 それ以外の場合は、参照する方式が適用されなければ NULL が入る。 G
相関_
名前
VARCHAR(128)
ステートメントで指定された表またはビューの相関名。 相関名が存在しない場合、この列は NULL になる。 43 列未満のプラン表を使用してプランまたはパッケージをバインドした場合、この列には NULL 値が入る。 それ以外の場合は、参照する方式が適用されなければ NULL が入る。 G
PAGE_RANGE
CHAR(1)
NOT NULL
WITH DEFAULT
表がページ範囲スクリーニングの条件を満たすかどうかの表示。 条件を満たしていれば、必要な表パーティション以外はスキャンする必要がない。
Y
はい
ブランク
いいえ
G
JOIN_TYPE
CHAR(1)
NOT NULL
WITH DEFAULT
結合のタイプ:
F
FULL OUTER JOIN
L
LEFT OUTER JOIN
P
ペアワイズ結合
S
スター型結合
ブランク
INNER JOIN または結合なし

RIGHT OUTER JOIN は使用時に LEFT OUTER JOIN に変換されるので、 JOIN_TYPE は L になる。

G
QBLOCK_TYPE
CHAR(6)
NOT NULL
WITH DEFAULT
それぞれの照会ブロックに関して、実行された SQL 操作のタイプを示す。 最外部照会の場合、この列はステートメント・タイプを識別します。 可能な値は以下のとおりです。
SELECT
SELECT
INSERT
INSERT
UPDATE
UPDATE
MERGE
MERGE
DELETE
DELETE
SELUPD
SELECT (FOR UPDATE OF を指定)
DELCUR
DELETE WHERE CURRENT OF CURSOR
UPDCUR
UPDATE WHERE CURRENT OF CURSOR
CORSUB
相関副選択または全選択
TRUNCA
TRUNCATE
NCOSUB
非相関副選択または全選択
TABLEX
表式
TRIGGR
CREATE TRIGGER の WHEN 文節
UNION
UNION
UNIONA
UNION ALL
INTERS
INTERSECT
INTERA
INTERSECT ALL
EXCEPT
EXCEPT
EXCEPTA
EXCEPT ALL
G
primary_
accesstype
CHAR(1)
NOT NULL
WITH DEFAULT
直接行アクセスが最初に試行されるかどうかの表示。
D
Db2 は、rowid 列で直接行アクセスの使用を試みる。 Db2 が実行時に rowid 列で直接行アクセスを使用できない場合は、PLAN_TABLEの ACCESSTYPE 列に記述されているアクセス・パスを使用する。
T
基本表または結果ファイルは、マテリアライズされて作業ファイルになり、その作業ファイルは、疎索引アクセスを介してアクセスされる。 基本表が含まれる場合、ACCESSTYPE は、その基本表がアクセスされる方法を示す。
ブランク
Db2 は、作業ファイルに rowid 列または疎索引アクセスを使用した直接行アクセスの使用を試行しない。 PLAN_TABLE の ACCESSTYPE 列の値は、表にアクセスする方式に関する情報を提供する。
G
PARENT_QBLOCKNO
SMALLINT
NOT NULL
親照会ブロックの QBLOCKNO を示す番号。 G
TABLE_TYPE
CHAR(1)
新規の表のタイプ:
B
SELECT from INSERT、SELECT from UPDATE、SELECT from MERGE、または SELECT from DELETE ステートメントのバッファー。
C
共通表式
F
表関数
I
新規表は IN リスト述部から生成される。 IN リスト述部が一致する述部として選択されている場合、これはメモリー内の表としてアクセスされる。
M
マテリアライズ照会表
Q
一時的な中間結果表 (マテリアライズされていない)。 ビューまたはネストされた表の式の名前の場合、値 Q は、マテリアライズが仮想であり、 実際のものでなかったことを示します。 マテリアライズが仮想になる可能性があるのは、分散されていない UNION ALL が、ビューまたはネストされた表の式の定義に含まれている場合 です。
R
再帰的共通表式
S
副照会 (相関または非相関)
T
W
作業ファイル

照会で、暗黙的なソートを必要とする GROUP BY、ORDER BY、または DISTINCT を使用する場合、この列の値は NULL になります。

G
TABLE_ENCODE
CHAR(1)
表のコード化スキーム。 可能値は次のとおりです。
A
ASCII
E
EBCDIC
U
Unicode
M
表には複数の CCSID セットが入っています
G
TABLE_SCCSID
SMALLINT
NOT NULL
WITH DEFAULT
表の SBCS CCSID 値。 列 TABLE_ENCODE が M の場合、この値は 0 です。 G
TABLE_MCCSID
SMALLINT
NOT NULL
WITH DEFAULT
表の混合 CCSID 値。 TABLE_ENCODE 列の値が M の場合、この値は 0 です。 DSNHDECP モジュールに MIXED=NO が指定されている場合、この値は -2 です。 G
TABLE_DCCSID
SMALLINT
NOT NULL
WITH DEFAULT
表の DBCS CCSID 値。 TABLE_ENCODE 列の値が M の場合、この値は 0 です。 DSNHDECP モジュールに MIXED=NO が指定されている場合、この値は -2 です。 G
 
INTEGER
NOT NULL
WITH DEFAULT
この列の値は IBM® 専用です。 I
CTEREF
SMALLINT
NOT NULL
WITH DEFAULT
参照される表が共通表式の場合、この値は、最上位照会ブロック番号です。 G
PARENT_PLANNO
SMALLINT
NOT NULL
相関副照会が呼び出される親照会ブロックのプラン番号に相当します。 または、非相関副照会の場合は、副照会の作業ファイルを表す、親照会ブロック内のプラン番号に相当します。 G
EXPANSION_REASON
CHAR(2)
NOT NULL
この列は、アーカイブ表またはテンポラル表を参照する静的ステートメントにのみ適用されます。 他のステートメントについては、この列はブランクです。

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

これらの特別なレジスタまたはグローバル変数のいずれかが Y に設定され、対応するバインドオプションが YES に設定されている場合、 Db2 は暗黙のうちに特定の構文をステートメントに追加します。 この列は、その暗黙的な照会変換が照会に含まれているかどうか、およびその理由を示します。

この列は、次のいずれかの値を取ります。

A
照会には、SYSIBMADM.GET_ARCHIVE 組み込みグローバル変数の結果として暗黙照会変換が含まれています。
B
照会には、CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの結果として暗黙照会変換が含まれています。
S
照会には、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターの結果として暗黙照会変換が含まれています。
SB
照会には、CURRENT TEMPORAL SYSTEM_TIME 特殊レジスターと CURRENT TEMPORAL BUSINESS_TIME 特殊レジスターの結果として暗黙照会変換が含まれています。
ブランク
照会には暗黙照会変換が含まれません。
G