IBM Support

[Db2] SQL ストアード・プロシージャーのアクセス・プランを取得する方法

Question & Answer


Question

SQL ストアード・プロシージャーのアクセス・プランを取得する方法を教えてください。

Answer

SQL ストアード・プロシージャーは、特に指定しない限り、作成時にアクセス・プランが選択されます。
CREATE PROCEDURE 実行時に、以下の要領で EXPLAIN 情報を取得できます。
  1. Explain を有効にして SQL プロシージャーを作成します。
    db2 "call set_routine_opts(get_routine_opts() || ' EXPLAIN ALL')"
    db2 "CREATE PROCEDURE ...."
  2. Explain 表からプランをフォーマットします。
    db2exfmt -d データベース名 -1 -o 出力ファイル名
    ※ set_routine_opts による設定は、同一セッション内においてのみ有効です。恒久的に設定したい場合は、DB2 レジストリ変数 DB2_SQLROUTINE_PREPOPTS を設定してください。両方設定されている場合は、set_routine_opts が優先されます。

なお、V9.7 FP1 以上のレベルでは、以下の FAQ に記載されているように、パッケージ・キャッシュからアクセス・プランを取得できます。
[Db2] パッケージ・キャッシュから Explain を採取する方法

運用上の考慮点
アクセス・プランを取得するためには、事前に Explain 表を作成しておく必要があります。関連情報を参照してください。

関連情報
[Db2] Explain 表の作成方法と削除方法
[Db2] SQL の実行計画 (Explain) を取得する方法
[Db2] パスポート・アドバンテージによく寄せられる質問

コンパイル済み SQL オブジェクトのプリコンパイル・オプションと BIND オプションのカスタマイズ
セクションから得られる Explain 情報を使った照会パフォーマンスの調査
 
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PkyAAE","label":"Compiler-\u003EOptimization db2explain db2advis"},{"code":"a8m500000008PmkAAE","label":"Routines - Stored Procedures and UDF-\u003ESQL Routines"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
24 August 2023

UID

swg21614846