검색 최적화를 사용하여 스칼라 하위 쿼리로 쿼리 속도 높이기¶
스칼라 하위 쿼리는 단일 값(1개 행의 1개 열)을 반환합니다. 반환할 행이 없으면 하위 쿼리는 NULL을 반환합니다. 검색 최적화 서비스는 스칼라 하위 쿼리가 있는 쿼리의 성능을 향상시킬 수 있습니다. 하위 쿼리에 대한 자세한 내용은 하위 쿼리 관련 작업하기 섹션을 참조하십시오.
다음 섹션에서는 하위 쿼리가 있는 쿼리에 대한 검색 최적화 지원에 대한 자세한 정보를 제공합니다.
스칼라 하위 쿼리가 있는 쿼리에 대한 검색 최적화 활성화¶
하위 쿼리가 있는 쿼리는 하위 쿼리 결과와 동일한 열에 대해 검색 최적화를 사용하도록 설정하지 않으면 개선되지 않습니다. 테이블에 스칼라 하위 쿼리가 있는 쿼리의 성능을 개선하려면 ALTER TABLE … ADD SEARCH OPTIMIZATION 명령을 사용하여 다음 중 하나를 수행합니다.
특정 열에 대한 검색 최적화를 사용 설정합니다.
테이블의 모든 열에 대해 검색 최적화를 사용 설정합니다.
일반적으로, 특정 열에 대해서만 검색 최적화를 활성화하는 것이 가장 좋습니다. ON EQUALITY 절을 사용하여 열을 지정합니다. 이 예제에서는 특정 열에 대한 검색 최적화를 활성화합니다.
ALTER TABLE mytable ADD SEARCH OPTIMIZATION ON EQUALITY(mycol);
지원되는 데이터 타입의 모든 열에 대해 EQUALITY 를 지정하려면(반정형 및 GEOGRAPHY 제외):
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)는 이점을 얻지 못합니다.
스칼라 하위 쿼리로 지원되는 쿼리 예제¶
다음 쿼리는 검색 최적화 서비스에서 지원하는 스칼라 하위 쿼리가 있는 쿼리의 예입니다.
이 쿼리에는 외부 쿼리의 테이블과 동일한 테이블을 쿼리하는 스칼라 하위 쿼리가 있습니다. 성능을 개선하려면 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);