검색 최적화로 스칼라 서브쿼리를 사용하는 쿼리 속도 향상

검색 최적화로 스칼라 서브쿼리를 사용하는 쿼리 속도 향상

스칼라 서브쿼리는 단일 값(한 열의 한 행)을 반환합니다. 반환할 행이 없으면 서브쿼리는 NULL을 반환합니다. 검색 최적화 서비스는 스칼라 서브쿼리가 있는 쿼리의 성능을 향상시킬 수 있습니다. 서브쿼리에 대한 자세한 내용은 서브쿼리 작업 을 참고하세요.

다음 섹션은 서브쿼리가 있는 쿼리에 대한 검색 최적화 지원에 대한 자세한 정보를 제공합니다.

출처: Snowflake 문서

본문

스칼라 서브쿼리가 있는 쿼리에 대한 검색 최적화 활성화

서브쿼리의 결과와 같은 열에 대해 검색 최적화를 활성화하지 않으면 서브쿼리가 있는 쿼리는 개선되지 않습니다. 테이블에서 스칼라 서브쿼리가 있는 쿼리의 성능을 향상시키려면 ALTER TABLE … ADD SEARCH OPTIMIZATION 명령을 사용해 다음 중 하나를 수행하세요.

  • 특정 열에 대해 검색 최적화를 활성화합니다.
  • 테이블의 모든 열에 대해 검색 최적화를 활성화합니다.

일반적으로 특정 열에 대해서만 검색 최적화를 활성화하는 것이 모범 사례입니다. ON EQUALITY 절을 사용해 열을 지정하세요. 이 예시는 특정 열에 대해 검색 최적화를 활성화합니다.

ALTER TABLE mytable ADD SEARCH OPTIMIZATION ON EQUALITY(mycol);

지원되는 데이터 타입의 모든 열(반정형 및 GEOGRAPHY 제외)에 대해 EQUALITY를 지정하려면:

ALTER TABLE mytable ADD SEARCH OPTIMIZATION;

자세한 내용은 검색 최적화 활성화 및 비활성화 를 참고하세요.

지원되는 데이터 타입

검색 최적화 서비스는 다음 데이터 타입의 열에 대한 스칼라 서브쿼리의 성능을 향상시킬 수 있습니다.

스케일이 0인 모든 INTEGER 데이터 타입.

다른 유형의 값(예: VARIANT, FLOAT, GEOGRAPHY, GEOMETRY)을 포함하는 서브쿼리는 혜택을 받지 못합니다.

스칼라 서브쿼리가 있는 지원되는 쿼리 예시

다음 쿼리는 검색 최적화 서비스에서 지원되는 스칼라 서브쿼리가 있는 쿼리의 예시입니다.

이 쿼리는 외부 쿼리의 테이블과 동일한 테이블을 쿼리하는 스칼라 서브쿼리를 가집니다. 성능을 향상시키려면 employees 테이블의 salary 열에 대해 검색 최적화가 활성화되어 있는지 확인하세요.

SELECT employee_id
  FROM employees
  WHERE salary = (
    SELECT MAX(salary)
      FROM employees
      WHERE department = 'Engineering');

이 쿼리는 외부 쿼리의 테이블과 다른 테이블을 쿼리하는 스칼라 서브쿼리를 가집니다. 성능을 향상시키려면 products 테이블의 product_id 열에 대해 검색 최적화가 활성화되어 있는지 확인하세요.

SELECT *
  FROM products
  WHERE products.product_id = (
    SELECT product_id
      FROM sales
      GROUP BY product_id
      ORDER BY COUNT(product_id) DESC
      LIMIT 1);

더 알아보기 (Learn more)