17.5.7 検索方法の種類
(1) インデクスを使用しない検索
- TABLE SCAN
- インデクスを使用しないで,表のデータページを検索します。
(2) 一つのインデクスを使用した検索
- INDEX SCAN
- 単一列インデクスのインデクスページを検索して絞り込んだ後,表のデータページを検索します。
- KEY SCAN
- 単一列インデクスのインデクスページだけを検索します。データページは検索しません。
- MULTI COLUMNS INDEX SCAN
- 複数列インデクスのインデクスページを検索して絞り込んだ後,表のデータページを検索します。
- MULTI COLUMNS KEY SCAN
- 複数列インデクスのインデクスページだけを検索します。データページは検索しません。
- PLUGIN INDEX SCAN
- プラグインインデクスを使用して絞り込んだ後,表のデータページを検索します。
- PLUGIN KEY SCAN
- プラグインインデクスを使用してインデクスページだけを検索します。データページは検索しません。
(3) SELECT-APSL
- SELECT-APSL(HiRDB/パラレルサーバの場合だけ)
- 条件に?パラメタを含んでいる場合,?パラメタの値によって最適な検索方法が変わることがあります。また,前処理時に?パラメタの値が決まらないため,最適な検索方法が決定できません。そのため,SQL実行時にヒット率を計算して検索方法を決定します。
(4) 複数のインデクスを使用した検索
- AND PLURAL INDEXES SCAN
- AND演算子又はOR演算子で結ばれた探索条件に対して,それぞれのインデクスを使用して検索し,行識別子(ROWID)をそれぞれの作業表に格納します。これらの作業表を,AND演算子の場合は積集合,OR演算子の場合は和集合,ANDNOT演算子(ASSIGN LIST文でだけ使用できます)の場合は差集合をとって,一つの作業表にまとめます。その後,この作業表の行識別子を基に行を取り出します。
- 各条件から行識別子の作業表を作成するときに,条件列にインデクスがなくても,TABLE SCANによって作業表を作成する場合があります。
- OR PLURAL INDEXES SCAN
- OR演算子で結ばれた探索条件に対して,それぞれのインデクスを使用して検索し,行識別子(ROWID)を一つの作業表に格納します。この作業表の重複する行を重複排除した後,行識別子を基に行を取り出します。
- 各条件から行識別子の作業表を作成するときに,条件列にインデクスがなくても,TABLE SCANによって作業表を作成する場合があります。
(5) 作業表の検索
- LIST SCAN
- 内部的に作成した作業表を検索します。
(6) 行識別子を使用した検索
- ROWID FETCH
- 行識別子(ROWID)をキーにして表を検索します。行を取り出す必要がない場合は検索しません。
(7) 外部サーバに対する問合せ結果の検索
- FOREIGN SERVER SCAN
- 外部サーバに対してSQLを発行し,問合せ結果を受け取ります。
- FOREIGN SERVER LIMIT SCAN
- 先頭からn行の検索結果を取得する機能を使用している場合に表示されることがあります。外部サーバに対して,ORDER BY句を含むSQL文を実行し,問合せ結果の先頭からn行を受け取ります。