変更の始まり

一時索引付きリストの走査および索引マージ

一時索引付きリスト走査操作は、永続基数索引で実行される索引走査操作と似ています。 これもテーブルから行をキー順に取り出すのに使用されますが、一時索引付き・リスト・オブジェクトが最初に作成される必要があります。 この操作は多くの場合、索引マージ操作と組み合わせて実行されます。ただし、一部の特殊照会およびグループ化照会では、関連付けられた索引マージ操作なしで、一時索引付きリスト走査を使用できます。

このアクセス方式は、不等号選択がある場合に使用され、既存の永続基数索引と組み合わせて使用されます。特殊索引走査または特殊索引プローブ操作が、行の固有のセットを取得するために索引に対して実行されます。次に、行が一時索引付きリストに挿入され、適切な順序付けが提供されます。

一般に、基数索引が一時リスト走査および索引マージ順序付けに適格になるには、索引は以下のように作成する必要があります。
  • ORDER BY リストにない等号述部が含まれている列は、索引の最初のキーにする必要があります。
  • その後に、ORDER BY リストにない不等号述部の列が続きます。等号述部列に続けて、最も選択的な述部の列が最初に来るように列を配置する必要があります。
  • その後に、照会の ORDER BY 節と同じ順序で同じ ASC または DESC 属性を持つ ORDER BY 列が続きます。
  • オプションとして、最後に、他の選択列、または索引専用アクセス用の他の選択された列を含めることができます。

一時ソート・リストは内部データ構造であり、 データベース・マネージャーだけが作成できます。

表 1. 一時索引付きリスト走査
データ・アクセス方式 一時索引付きリスト走査
説明 一時索引付きリストに関連付けられたすべてのキーを順次走査して処理します。
利点
  • 照会に不等号 WHERE 選択が含まれている場合にデータを順序付けるための代替実装を提供します。
  • 索引のキーに基づいて、行を順序通りに戻します。
  • 低メモリー環境で、ソート・リスト走査より優れたページング特性が得られます。
  • 部分的な応答セットのみがフェッチされる場合に、ソート・リスト走査よりも優れたパフォーマンス特性が得られます。
考慮事項 単一テーブル照会の順序付け、グループ化、または特殊処理を処理するために使用されます。
使用される可能性が高い場合
  • 一時結果の使用が、照会環境パラメーター (ALWCPYDTA) で許可されている場合
  • 単一または複数の列に基づいてデータを順序付けまたはグループ化する必要があり、照会に不等号 WHERE 選択が含まれている場合
  • 照会が最初の入出力用に最適化されている場合
  • 特殊値の数が少ない場合
SQL ステートメントの例
CREATE INDEX INDEX1 ON EMPLOYEE(SALARY, WORKDEPT)
SELECT DISTINCT WORKDEPT FROM EMPLOYEE
WHERE SALARY > 30000
OPTIMIZE FOR 30 ROWS
使用を示すデータベース・モニターおよびプラン・キャッシュ・レコード QQRID 3001 (QQRCOD = ‘I7’)
SMP 並列の使用可能化 いいえ
別名  
Visual Explain アイコン
一時ソート・リスト・アイコン

上の例を使用すると、最適化プログラムは、索引 INDEX1 から特殊 WORKDEPT 値の一時索引付きリストを作成することを選択しています。SALARY > 3000 の選択は、索引個別プローブに適用されています。

索引マージ:

索引マージ操作は、一時索引付きリスト走査および索引個別プローブまたは特殊索引と組み合わせて順序付けを提供するために使用されます。

順序付けされた行は、照会要求 (順序付けまたはグループ化) の一部を満たすために最適化プログラムによって使用されます。

表 2. 索引マージ
データ・アクセス方式 索引マージ
説明 一時索引付きリストに関連付けられたすべてのキーを順次走査して処理します。
利点
  • 索引キー値からすべてのデータを抽出できるので、テーブル・プローブの必要性がありません。
  • 索引のキーに基づいて、行を順序通りに戻します。
考慮事項 単一テーブル照会の順序付け、グループ化、または特殊処理を処理するために使用されます。
使用される可能性が高い場合
  • 一時結果の使用が、照会環境パラメーター (ALWCPYDTA) で許可されている場合
  • 単一または複数の列に基づいてデータを順序付けまたはグループ化する必要があり、照会に不等号 WHERE 選択が含まれている場合
  • 照会が最初の入出力用に最適化されている場合
  • 特殊値の数が少ない場合
SQL ステートメントの例
CREATE INDEX IX1 ON 
Sales(Sales_date, Region, Sales_person)
SELECT * FROM Sales
  WHERE 
   Sales_date BETWEEN '1996-03-29' 
    AND '1996-04-29'
     AND Region IN ('Quebec','Manitoba')
ORDER BY Sales_person;
使用を示すデータベース・モニターおよびプラン・キャッシュ・レコード QQRID 3001 (QQRCOD = ‘I7’)
SMP 並列の使用可能化 いいえ
別名  
Visual Explain アイコン
待ち行列への挿入アイコン
変更の終わり