SQLの実行計画を取得したい場合は、SELECT calsettrace()、SELECT calgettrace()を使用します。

コマンド説明
SELECT calsettrace(1); SQLの実行計画取得モードに入ります。
SELECT calgettrace(); 直前に実行したSQLの実行計画を取得します。
SELECT calsettrace(0); SQLの実行計画取得モードを終了します。


実行計画の取得例

1. SELECT calsettrace(1)を実行してSQLの実行計画モードに入ります。



2. 実行計画を取得したいSQLを実行します。

 このときwarningが表示されますが、これは実行計画取得時には必ず表示されるため無視してください。


3. SELECT calgettrace()を実行してSQLの実行計画を取得します。



4. SELECT calsettrace(0)を実行して実行計画モードを終了します。



取得できる情報

以下の情報を取得できます。
項目名内容
Desc実行された操作。
・BPS:条件に該当するデータを抽出しています。
・HJS:ハッシュ結合を行なっています。
・TAS:中間集計結果を受信し、必要な集計を行います。
ModeUMまたはPMのどちらで実行されたか。
Table処理の対象となるテーブル。
TableOIDスキャンされたテーブルのオブジェクトID。
ReferenceColumns問い合わせの処理に必要な列。
PIO問合せで実行された物理I/O。対象データがすべてキャッシュされている場合、この値は0になります。
LIO問合せで実行された論理I/O
PBEエクステントマップにより除外されたブロックアクセスの数。エクステントマップが使用されなかった場合、
この値は0になります。
Elapsed表示されているステップの処理時間。
Rows表示されているステップで返された中間行の行数。


なお、実行計画取得モード中は、ロギング処理の増加により、パフォーマンスへの影響があることにご注意ください。


参考情報

実行計画の活用例については以下をご確認ください。

SELECT時にエクステントマップが使用されているか確認する