How conjunctions (AND) and disjunctions (OR) work with search optimization¶
Search optimization can accelerate queries using conjunctions (AND operator) and disjunctions (OR operator) of supported predicates.
Conjunctions of supported predicates (AND)¶
For queries that use conjunctions of predicates (i.e., AND), query performance can be improved by search optimization if any of the predicates would benefit.
For example, suppose that a query has:
where condition_x and condition_y
Search optimization can improve performance if either condition separately returns a few rows (i.e., condition_x
returns a few rows or condition_y
returns a few rows).
If condition_x
returns a few rows but condition_y
returns many rows, the query performance can still
benefit from search optimization.
Examples¶
If predicates are individually supported by the search optimization service, then they can be joined by the conjunction
AND
and still be supported by the search optimization service:
select id, c1, c2, c3
from test_table
where c1 = 1
and
c3 = TO_DATE('2004-03-09')
order by id;
DELETE and UPDATE (and MERGE) can also use the search optimization service:
delete from test_table where id = 3;
update test_table set c1 = 99 where id = 4;
Disjunctions of supported predicates (OR)¶
For queries that use disjunctions of predicates (i.e., OR), query performance can be improved by search optimization if all predicates would benefit.
For example, suppose that a query has:
where condition_x or condition_y
Search optimization can improve performance if each condition separately returns a few rows (i.e., condition_x
returns
a few rows and condition_y
returns a few rows).
If condition_x
returns a few rows but condition_y
returns many rows, the query performance does not
benefit from search optimization.
In the case of disjunctions, each predicate in isolation is not decisive in the query. All predicates must be evaluated to determine whether search optimization can improve performance.