검색 최적화를 통한 조인 쿼리 속도 향상

검색 최적화 서비스는 조인의 빌드 측에서 고유 값이 적은 조인 쿼리의 성능을 향상시킬 수 있습니다.

예를 들어, 검색 최적화 서비스는 이러한 유형의 조인 성능을 개선할 수 있습니다.

  • products 는 각 제품에 대한 행이 포함된 테이블이고 sales 는 제품의 각 판매에 대한 행이 포함된 테이블이라고 가정합니다. products 테이블은 행 수가 더 적고 sales 테이블보다 작습니다. 특정 제품의 모든 판매를 찾으려면 sales 테이블(큰 테이블)을 products 테이블(작은 테이블)과 조인합니다. products 테이블이 작기 때문에 조인의 빌드 쪽에는 고유한 값이 거의 없습니다.

    참고

    데이터 웨어하우징에서 큰 테이블을 종종 팩트 테이블 이라고 합니다. 작은 테이블을 차원 테이블 이라고 합니다. 이 항목의 나머지 부분에서는 조인에서 Large 테이블과 Small 테이블을 참조할 때 이 용어를 사용합니다.

  • customers 는 각 고객에 대한 행이 포함된 테이블이고 sales 는 각 판매에 대한 행이 포함된 테이블이라고 가정합니다. 두 테이블 모두 Large입니다. 특정 고객의 모든 매출을 찾으려면 sales 테이블(프로브 쪽)을 customers 테이블(빌드 쪽)과 조인하고 필터를 사용하여 조인의 빌드 쪽에 소수의 고유 값이 나타나도록 합니다.

이 항목의 내용:

검색 최적화 서비스를 활성화하여 조인 성능 향상하기

검색 최적화 서비스를 사용하여 조인 성능을 개선하려면 조인의 프로브 쪽 테이블에 검색 최적화 를 추가합니다. 이 테이블은 일반적으로 팩트 테이블과 같이 조인 쿼리에서 필터링되지 않는 큰 테이블입니다.

검색 최적화를 활용하려면 조인의 빌드 쪽에 작은 차원 테이블이거나 선택적 필터로 인해 고유한 값이 적은지 확인합니다. 쿼리의 검색 최적화 비용은 조인의 빌드 측에서 조회해야 하는 고유 값의 수에 비례합니다. 이 숫자가 너무 크면 Snowflake는 검색 액세스 경로를 사용하지 않고 대신 일반 테이블 액세스 경로를 사용할 수 있습니다.

지원되는 조인 조건자

검색 최적화 서비스는 다음 유형의 조인 조건자로 쿼리 성능을 개선할 수 있습니다.

  • probe_side_table.column = build_side_table.column 형태의 같음 조건자.

  • 조건자의 빌드 측 피연산자에 대한 변환(예: 문자열 연결, 더하기 등)을 수행합니다.

  • 여러 같음 조건자의 접속사(AND).

지원되는 쿼리의 예

이 섹션에서는 검색 최적화의 이점을 누릴 수 있는 조인 쿼리의 예를 보여 줍니다.

예제: 단순 비교 조건자

다음은 단순한 같음 조건자를 조인 조건자로 사용하는 지원 쿼리의 예입니다. 이 쿼리는 sales 라는 테이블을 customers 라는 테이블과 조인합니다. 프로브 사이드 테이블(sales)은 크기가 크고 검색 최적화가 활성화되어 있습니다. 빌드 측 테이블 customers 도 크지만 customer_id 열의 선택적 필터로 인해 이 테이블의 입력값은 작습니다.

SELECT sales.date, customer.name
  FROM sales JOIN customers ON (sales.customer_id = customers.customer_id)
  WHERE customers.customer_id = 2094;
Copy

예제: 차원 측 피연산자에서 변환된 조건자

다음 쿼리는 sales 라는 팩트 테이블을 products 라는 차원 테이블과 조인합니다. 팩트 테이블은 크고 검색 최적화가 활성화되어 있습니다. 치수 테이블이 작습니다.

이 쿼리는 조인 조건의 값을 곱하는 등 조건자의 차원 측 피연산자를 변환하며, 검색 최적화의 이점을 누릴 수 있습니다.

SELECT sales.date, product.name
  FROM sales JOIN products ON (sales.product_id = product.old_id * 100)
  WHERE product.category = 'Cutlery';
Copy

예제: 여러 열에 걸친 조건자

조인 조건자가 여러 열에 걸쳐 있는 쿼리는 검색 최적화의 이점을 누릴 수 있습니다.

SELECT sales.date, product.name
  FROM sales JOIN products ON (sales.product_id = product.id and sales.location = product.place_of_production)
  WHERE product.category = 'Cutlery';
Copy

예: 포인트 조회 필터와 조인 조건자를 사용하는 쿼리

일반적인 포인트 조회 필터와 조인 조건자를 모두 사용하는 쿼리에서는 검색 최적화 서비스로 둘 모두의 성능을 개선할 수 있습니다. 다음 쿼리에서 검색 최적화 서비스는 sales.location point-lookup 조건자뿐만 아니라 product_id join 조건자도 개선할 수 있습니다.

SELECT sales.date, product.name
  FROM sales JOIN products ON (sales.product_id = product.id)
  WHERE product.category = 'Cutlery'
  AND sales.location = 'Buenos Aires';
Copy

제한 사항

검색 최적화 서비스 및 조인 쿼리에는 다음과 같은 제한 사항이 적용됩니다.

  • 조인 조건자의 분리(OR)는 현재 지원되지 않습니다.

  • LIKE, ILIKE, RLIKE 조인 조건자는 현재 지원되지 않습니다.

  • VARIANT 열의 조인 조건자는 현재 지원되지 않습니다.

  • EQUAL_NULL 비교 조건자는 현재 지원되지 않습니다.

  • 현재 검색 최적화 서비스의 제한 사항 은 조인 쿼리에도 적용됩니다.