SQL 解説書

SET CURRENT QUERY OPTIMIZATION

SET CURRENT QUERY OPTIMIZATION ステートメントは、 CURRENT QUERY OPTIMIZATION 特殊レジスターに値を割り当てます。 この値は、動的 SQL ステートメントの準備の時点で使用される最適化手法の現行クラスを指定します。 このステートメントは、トランザクションの制御下にはありません。

呼び出し

このステートメントは、アプリケーション・プログラムに組み込むか、 または動的 SQL ステートメントを使用して発行することができます。 このステートメントは、動的に準備可能な実行可能ステートメントです。

許可

このステートメントの実行には、特に権限は必要ありません。

構文

                                      .-=-.
>>-SET--CURRENT--QUERY--OPTIMIZATION--+---+--------------------->
 
>-----+-0-------------+----------------------------------------><
      +-1-------------+
      +-2-------------+
      +-3-------------+
      +-5-------------+
      +-7-------------+
      +-9-------------+
      '-host-variable-'
 

説明

optimization-class
optimization-class (最適化クラス) は、整数定数、 または実行時に適切な値が入れられるホスト変数の名前として指定することができます。 クラスの概要を以下に示します (詳細については、管理の手引き を参照してください)。

0
アクセス・プランの生成に、最低限の最適化が行われることを指定します。 このクラスは、単純な動的 SQL により、 適切な索引を伴う表にアクセスする場合に最も適しています。

1
アクセス・プランの生成に、 DB2 バージョン 1 に匹敵する最適化を行うことを指定します。

2
DB2 バージョン 1 よりも高度な最適化を指定します。 ただし、特にきわめて複雑な照会の場合、 レベル 3 やそれ以降よりも最適化コストは大幅に低くなります。

3
アクセス・プランの生成に、 中程度の最適化を行うことを指定します。

5
アクセス・プランの生成に、かなり高度な最適化を行うことを指定します。 動的 SQL 照会が複雑な場合には、 アクセス・プランの選択にかかる時間を制限するのに発見的手法の規則が使用されます。 可能な場合、照会では基礎となる基礎表ではなく要約表が使用されます。

7
アクセス・プランの生成に、 かなり高度な最適化を行うことを指定します。 5 とほとんど同じですが、発見的手法の規則が使用されない点が異なります。

9
アクセス・プランの生成に、最大限の最適化を行うことを指定します。 これにより、評価対象のアクセス・プランの数は大幅に増大します。 このクラスは、大規模な表を使用するきわめて複雑で、実行に長時間を要する照会に対して、 より良いアクセス・プランを生成できるかどうかを判別する場合に使うようにしてください。 Explain とパフォーマンス測定値を使用することにより、 効率的なプランが生成されたかどうかを検証することができます。

host-variable
データ・タイプは INTEGER です。 値は、0 〜 9 の範囲内である必要があります (SQLSTATE 42815)。 ただし、値は、0、1、2、3、5、7、または 9 のいずれかでなければなりません (SQLSTATE 01608)。 host-variable が標識変数を伴っている場合、 その標識変数の値は NULL 値以外でなければなりません (SQLSTATE 42815)。

例 1: この例は、最も程度の高い最適化を選択する方法を示しています。

  SET CURRENT QUERY OPTIMIZATION 9

例 2: 以下の例は、 照会の中で CURRENT QUERY OPTIMIZATION 特殊レジスターを使用する方法を示しています。

以下の例は、SYSCAT.PACKAGES カタログ視点を使用して、 CURRENT QUERY OPTIMIZATION 特殊レジスターの現行値と同じ設定でバインドされたすべてのプランを検索しています。

  EXEC SQL DECLARE C1 CURSOR FOR
    SELECT PKGNAME, PKGSCHEMA FROM SYSCAT.PACKAGES
    WHERE QUERYOPT = CURRENT QUERY OPTIMIZATION


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]