5.11.7 行値構成子を指定したIN述語に関する等価変換(行値構成子要素ごとの条件の追加)
IN述語の左側の行値構成子の行値構成子要素が同じ表の列指定だけの場合,各行値構成子要素に対するIN述語をAND条件で追加する等価変換が行われます。ただし,論理演算子ORやNOTに指定されたIN述語は,等価変換されません。なお,この等価変換で追加されるIN述語の上限は,SQL文全体で255個です。255個を超えた探索条件は追加されません。
この等価変換によって追加されたIN述語で,表の検索時にインデクスが使用されることがあります。
等価変換の例を次に示します。例中のC1,C2,C3は列名を意味しています。
- 〈この項の構成〉
(1) 例1
- [説明]
-
IN述語の左側に,同じ表の複数の列指定が指定されている行値構成子があります。この行値構成子から同じ列指定が抽出され,行値構成子要素ごとのIN述語の条件が追加されます。等価変換後,追加されたIN述語の条件で,探索時にインデクスが使用されることがあります。
(2) 等価変換される条件の形式
等価変換される条件の形式を次に示します。
-
IN述語
行値構成子 IN (行値構成子 〔,行値構成子〕…)
IN述語の左側の行値構成子が,次の条件を満たす場合に等価変換されます。
-
行値構成子要素がすべて列指定である
-
行値構成子要素の列指定がすべて同じ表の列指定である
-