더북(TheBook)

필터링이 적용된 컬럼은 인덱스에 포함할 필요가 없다는 점에 주목하자. 예를 들어 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’);


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.