결합(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가 많은 행을 반환하면 쿼리 성능은 검색 최적화의 혜택을 받지 못합니다.
분리의 경우에는 각 조건부가 쿼리에서 개별적으로 결정적이지 않습니다. 검색 최적화가 성능을 향상시킬 수 있는지 결정하려면 모든 조건부를 평가해야 합니다.