필터링이 적용된 컬럼은 인덱스에 포함할 필요가 없다는 점에 주목하자. 예를 들어 Products 테이블에 QuantityOnHand 컬럼이 있다고 하자. 재고가 적은 제품만 조회하는 쿼리를 만든다면 코드 2-21과 같이 필터링된 인덱스를 만들 수 있다.
코드 2-21 QuantityOnHand 컬럼에서 필터링된 인덱스 생성
CREATE NONCLUSTERED INDEX LowProducts
ON Products (ProductNumber)
WHERE QuantityOnHand < 10;
또 다른 가능한 시나리오로 문서 관리 시스템을 생각해 볼 수 있다. 일반적으로 DocumentStatus 테이블의 Status 컬럼에는 Draft(초고), Reviewed(퇴고), Pending publication(발행 보류), Published(발행), Pending expiration(만료 보류), Expired(만료) 같은 값이 있을 것이다. 예를 들어‘Pending publication’이나 ‘Pending expiration’ 상태의 문서를 검색해야 한다고 하자. 코드 2-22는 이 요구 사항에 따라 인덱스를 생성하는 예제이다.
코드 2-22 필터링된 인덱스 생성
CREATE NONCLUSTERED INDEX PendingDocuments
ON DocumentStatus (DocumentNumber, Status)
WHERE Status IN (‘Pending publication’, ‘Pending expiration’);