코드 2-25 정렬 연산을 피하려고 필터링된 인덱스 생성
CREATE INDEX SelectProducts
ON Products(ProductName, ProductNumber)
WHERE CategoryID IN (1, 5, 9);
물론 필터링된 인덱스나 부분 인덱스로 할 수 있는 일에는 한계가 있다. 예를 들어 GETDATE() 같은 날짜 함수를 사용할 수 없고, 지난 1년이나 다음 90일까지 등 날짜 컬럼에 특정한 범위 조건을 줄 수 없다. 즉, WHERE 절에서 사용하는 값과 정확히 일치하는 조건만 줄 수 있다.
핵심 정리
• 필터링된 인덱스는 적은 비율의 로우에 인덱스를 사용할 때 저장 용량을 절약할 수 있어 유용하다.
• 필터링된 인덱스는 로우의 하위 집합에서 유일한 제약 조건을 구현하는 데 사용할 수 있다(예를 들어 WHERE active = 'Y'를 만족하는 로우).
• 필터링된 인덱스는 정렬 연산을 피하는 데 사용할 수 있다.
• 테이블 파티셔닝이 다른 인덱스 관리의 오버헤드 없이 필터링된 인덱스와 비슷한 혜택을 줄 수 있는지 고려한다.