CURRENT EXPLAIN MODE 特殊レジスター

CURRENT EXPLAIN MODE 特殊レジスターには、 該当する動的 SQL ステートメントに関連のある Explain 機能の動作を制御するための VARCHAR(254) の値が入れられます。

CURRENT EXPLAIN MODE 特殊レジスターには、 該当する動的 SQL ステートメントに関連のある Explain 機能の動作を制御するための VARCHAR(254) の値が入れられます。 この機能は、Explain 情報を生成し、 その情報を Explain 表に挿入します。 この情報には、Explain スナップショットは入っていません。 使用できる値は、YES、EXPLAIN、NO、REOPT、RECOMMEND INDEXES、および EVALUATE INDEXES です。 (静的 SQL の場合、EXPLAIN バインド・オプションは同じ制御を提供します。 PREP および BIND コマンドの場合、EXPLAIN オプション値は YESNO、および ALL です。)

はい
Explain 機能を使用可能にし、 動的 SQL ステートメントについての Explain 情報をそのステートメントのコンパイル時にキャプチャーします。
EXPLAIN
機能を使用可能にします。ただし、動的ステートメントは実行されません。
いいえ
Explain 機能を使用不可にします。
REOPT
Explain 機能が使用可能になり、動的 (つまり増分バインド) SQL ステートメントに関する Explain 情報がキャプチャーされることになります。ただし、入力変数 (ホスト変数、特殊レジスター、グローバル変数、またはパラメーター・マーカー) の実際の値を使ってこのステートメントが再最適化された場合に限ります。
RECOMMEND INDEXES
各動的照会に一連の索引を推奨します。 ADVISE_INDEX 表に一連の索引を移植します。
EVALUATE INDEXES
動的照会のための仮想推奨索引を SQL コンパイラーが評価できるようにします。 この Explain モードで実行される照会は、仮想索引に基づいて作られた統計を使用してコンパイルおよび最適化されます。 ステートメントは実行されません。 USE_INDEX 列が Y に設定されている場合、評価される索引は ADVISE_INDEX 表から読み取られます。 USE_INDEX 列を I に設定し、EXISTS 列を Y に設定することによって、既存の非ユニーク索引を無視することもできます。 USE_INDEX=I と EXISTS=N の組み合わせが指定された場合、照会の索引評価は正常に行われますが、問題となっている索引は無視されません。

初期値は NO です。 値は、SET CURRENT EXPLAIN MODE ステートメントを呼び出すことによって変更できます。

CURRENT EXPLAIN MODE と CURRENT EXPLAIN SNAPSHOT 特殊レジスター値は、 Explain 機能が呼び出されている場合に相互に作用します。 CURRENT EXPLAIN MODE 特殊レジスター値の方は、 EXPLAIN BIND オプションとも相互に作用します。 RECOMMEND INDEXES と EVALUATE INDEXES を設定できるのは、 CURRENT EXPLAIN MODE レジスターの場合だけです。これらを設定するには、 SET CURRENT EXPLAIN MODE ステートメントを使用します。

例: ホスト変数 EXPL_MODE (VARCHAR(254)) を CURRENT EXPLAIN MODE 特殊レジスターの現在の値に設定します。
   VALUES CURRENT EXPLAIN MODE
     INTO :EXPL_MODE