검색 최적화로 스칼라 함수를 사용하는 쿼리 속도 향상
검색 최적화로 스칼라 함수를 사용하는 쿼리 속도 향상
스칼라 함수는 호출마다 단일 값을 반환합니다. 검색 최적화 서비스는 동등 조건부에서 스칼라 함수를 사용하는 쿼리의 성능을 향상시킬 수 있습니다. 스칼라 함수는 시스템 정의 스칼라 함수 또는 사용자 정의 스칼라 SQL 함수 일 수 있습니다.
다음 섹션은 스칼라 함수를 사용하는 쿼리에 대한 검색 최적화 지원에 대한 자세한 정보를 제공합니다.
출처: 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 데이터 타입.
-
스케일이 0이 아닌 고정 소수점 비정수(예:
NUMBER(10,2)). -
고정 소수점 숫자의 캐스트 (예:
NUMBER(30, 2)::NUMBER(30, 5)). -
문자열 및 바이너리 데이터 타입 (예: VARCHAR 및 BINARY).
-
날짜 및 시간 데이터 타입 (예: DATE, TIME, TIMESTAMP).
다른 유형의 값(예: VARIANT, FLOAT, GEOGRAPHY, GEOMETRY)을 포함하는 쿼리는 혜택을 받지 못합니다.
스칼라 함수가 있는 지원되는 쿼리 예시
다음 쿼리는 스칼라 함수를 사용하며 검색 최적화 서비스에서 지원됩니다.
쿼리 조건부에서 시스템 정의 스칼라 함수 사용
이 쿼리는 동등 조건부에서 SHA2 시스템 정의 스칼라 함수를 사용합니다. 성능을 향상시키려면 test_so_scalar_function_system 테이블의 mycol 열에 대해 EQUALITY 검색 방법이 활성화되어 있는지 확인하세요.
SELECT *
FROM test_so_scalar_function_system
WHERE mycol = SHA2('Snowflake');
쿼리 조건부에서 사용자 정의 스칼라 SQL 함수 사용
사용자 정의 스칼라 함수를 생성하세요.
CREATE OR REPLACE FUNCTION test_scalar_udf(x INTEGER)
RETURNS INTEGER
AS
$$
SELECT x + POW(2, 3)::INTEGER + 2
$$
;
이 쿼리는 동등 조건부에서 test_scalar_udf 함수를 사용합니다. 성능을 향상시키려면 test_so_scalar_function_udf 테이블의 mycol 열에 대해 EQUALITY 검색 방법이 활성화되어 있는지 확인하세요.
SELECT *
FROM test_so_scalar_function_udf
WHERE mycol = test_scalar_udf(15750);