5.11 探索条件の等価変換
探索条件に指定された条件を効率的に評価するために,指定された探索条件をHADBが変換して評価することがあります。これを探索条件の等価変換といいます。探索条件が等価変換された場合,検索時に使用されるインデクスは等価変換後の探索条件を基に決定されます。検索時に使用されるインデクスの決定方法については,「5.2 SQL文の実行時に使用されるB-treeインデクスおよびテキストインデクス」および「5.3 SQL文の実行時に使用されるレンジインデクス」を参照してください。
HADBは,探索条件に指定された条件を次の順序で等価変換します。
-
行値構成子を指定した比較述語に関する等価変換(行値構成子を含まない条件への変換)
行値構成子を指定した比較述語を,行値構成子を含まない条件に等価変換します。
-
OR条件に関する等価変換(OR条件の外側への抜き出し)
OR条件中の条件を,OR条件の外側に抜き出す等価変換を行います。
-
OR条件に関する等価変換(IN条件への変換)
OR条件中の = 条件から作成したIN条件を,OR条件の外側に追加する等価変換を行います。
-
OR条件に関する等価変換(集合演算UNION ALLを指定した導出表への等価変換)
OR条件中の探索条件を,集合演算UNION ALLを指定した導出表に等価変換します。
-
スカラ演算に関する等価変換
スカラ演算を移項して等価変換します。
-
行値構成子を指定したIN述語に関する等価変換(同じ表の列指定の抽出)
行値構成子を指定したIN述語から,同じ表の列指定だけを抽出して条件を追加する等価変換を行います。
-
行値構成子を指定したIN述語に関する等価変換(行値構成子要素ごとの条件の追加)
行値構成子を指定したIN述語から,行値構成子要素ごとの条件を追加する等価変換を行います。
-
IN述語に関する等価変換
IN述語を = 条件または <> 条件に等価変換します。
-
HAVING句に関する等価変換(WHERE句への変換)
HAVING句の探索条件をWHERE句の探索条件に等価変換します。
-
導出問合せを指定したSQL文の探索条件に関する等価変換(導出問合せのWHERE句への移動)
導出問合せを指定したSQL文のWHERE句に指定された探索条件を,導出問合せのWHERE句に移動する等価変換を行います。
ここでは,上記の各等価変換について説明します。
- 〈この節の構成〉