論理積 (AND) および論理和 (OR) と検索最適化の関係¶
検索最適化は、サポートされている述語の 論理積 (AND 演算子) と 論理和 (OR 演算子) を使用してクエリを加速することができます。
サポートされている述語の接続詞(AND)¶
述語の論理積 (つまり、 AND) を使用するクエリでは、 いずれか の述語が メリットをもたらす 場合、検索最適化によってクエリのパフォーマンスが改善する場合があります。
たとえば、クエリに次のようなものがあるとします。
where condition_x and condition_y
いずれかの条件が個別に数行を返す場合(つまり、 condition_x
が数行を返す場合、 または condition_y
が数行を返す場合)は、検索最適化によってパフォーマンスが改善します。
condition_x
は数行を返すが、 condition_y
は多くの行を返す場合でも、検索最適化によってクエリのパフォーマンスが向上する場合があります。
例¶
述語が検索最適化サービスによって個別にサポートされている場合は、述語を接続詞 AND
で結合でき、検索最適化サービスによって引き続きサポートされます。
select id, c1, c2, c3
from test_table
where c1 = 1
and
c3 = TO_DATE('2004-03-09')
order by id;
DELETE および UPDATE (および MERGE)でも、検索最適化サービスを使用することができます。
delete from test_table where id = 3;
update test_table set c1 = 99 where id = 4;
サポートされている述語の論理和(OR)¶
述語の論理和 (つまり、 OR) を使用するクエリでは、 すべての 述語が メリットをもたらす 場合、検索最適化によってクエリのパフォーマンスが改善する場合があります。
たとえば、クエリに次のようなものがあるとします。
where condition_x or condition_y
各条件が個別に数行を返す場合(つまり、 condition_x
が数行を返し、 加えて condition_y
が数行を返す場合)は、検索最適化によってパフォーマンスが改善します。
condition_x
は数行を返すが、 condition_y
は多くの行を返す場合、検索最適化によってはクエリのパフォーマンスは向上 しません。
論理和の場合、分離された各述語はクエリ内で決定的にはなりません。すべての述語は、検索最適化がパフォーマンスを向上させることができるかどうかを判断するために評価されなければなりません。