결합(AND)과 분리(OR)가 검색 최적화에서 어떻게 작동하는지

결합(AND)과 분리(OR)가 검색 최적화에서 어떻게 작동하는지

검색 최적화는 지원되는 조건부(predicates)의 결합 (AND 연산자) 및 분리 (OR 연산자)를 사용하는 쿼리를 가속화할 수 있습니다.

출처: Snowflake 문서

본문

지원되는 조건부의 결합 (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가 많은 행을 반환하면 쿼리 성능은 검색 최적화의 혜택을 받지 못합니다.

분리의 경우에는 각 조건부가 쿼리에서 개별적으로 결정적이지 않습니다. 검색 최적화가 성능을 향상시킬 수 있는지 결정하려면 모든 조건부를 평가해야 합니다.

더 알아보기 (Learn more)