5.1.3 キースキャンとは
キースキャンとは,B-treeインデクスを使用して探索条件の評価を行い,探索条件を満たす行の列値をインデクスページから取り出す方式のことです。B-treeインデクスのインデクス構成列(キー)から列値を直接取り出すため,参照するページ数を削減できます。
SQL文中に指定されているすべての列が,インデクス構成列であるB-treeインデクスが定義されていて,かつ次のどれかの条件を満たす場合に,キースキャンが実行されます。
-
B-treeインデクスが表に定義されていて,B-treeインデクスを有効に利用できる探索条件が指定されている場合
-
検索に使用するB-treeインデクスが,インデクス指定で指定されている場合
-
集合関数MINまたはMAXが指定されている場合※
-
SELECT DISTINCTが指定されている場合※
-
UNIONまたはUNION DISTINCTが指定されている場合※
-
EXCEPTまたはEXCEPT DISTINCTが指定されている場合※
-
INTERSECTまたはINTERSECT DISTINCTが指定されている場合※
-
=ANY指定の限定述語が指定されている場合※
-
表副問合せを指定したIN述語が指定されている場合※
- 注※
-
HADBがB-treeインデクスを有効に利用できると判断した場合に限り,B-treeインデクスが使用されます。
ただし,次のどれかの条件を満たす場合は,データページを参照することがあります。
-
行を追加,更新,または削除したことがある表を検索する場合
-
文字列の末尾が半角空白であるデータを含むVARCHAR型の列を検索する場合
-
バイナリデータの末尾がX'00'であるVARBINARY列のデータを参照する場合
キースキャンの例を次の図に示します。
- [説明]
-
B-treeインデクスIDX_C1C2を使用して探索条件の評価を行います。C1列およびC2列の値をインデクスページから直接取り出すため,データページにはアクセスしません。
- メモ
-
テキストインデクスの場合は,キースキャンが実行されることはありません。