논리곱(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;
Copy

DELETE 및 UPDATE(및 MERGE)에서도 검색 최적화 서비스를 사용할 수 있습니다.

delete from test_table where id = 3;
Copy
update test_table set c1 = 99 where id = 4;
Copy

지원되는 조건자의 논리합(OR)

조건자의 논리곱(즉, OR)를 사용하는 쿼리의 경우 모든 조건자가 이점을 얻으면 검색 최적화를 통해 쿼리 성능을 향상할 수 있습니다.

예를 들어, 쿼리에 다음이 포함되어 있다고 가정해 보겠습니다.

where condition_x or condition_y

각 조건이 개별적으로 몇 개의 행을 반환(즉, condition_x 가 몇 개의 행을 반환 하며 condition_y 가 몇 개의 행을 반환)하는 경우 검색 최적화를 통해 성능을 향상할 수 있습니다

condition_x 는 몇 개의 행을 반환하지만 condition_y 는 많은 행을 반환하는 경우, 검색 최적화를 통해 쿼리 성능을 향상할 수 없습니다.

논리합의 경우 분리된 각 조건자는 쿼리에서 결정적이지 않습니다. 검색 최적화가 성능을 향상할 수 있는지 확인하려면 모든 조건자를 평가해야 합니다.