논리곱(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
는 많은 행을 반환하는 경우, 검색 최적화를 통해 쿼리 성능을 향상할 수 없습니다.
논리합의 경우 분리된 각 조건자는 쿼리에서 결정적이지 않습니다. 검색 최적화가 성능을 향상할 수 있는지 확인하려면 모든 조건자를 평가해야 합니다.