더북(TheBook)

필터링된 인덱스는 인덱스를 만들 때 WHERE 절을 추가해서 생성한다. 테이블 데이터의 전체 값 중 차지하는 비율이 적고 WHERE 절에서 빈번히 사용되는 값이 있을 때, 필터링된 인덱스를 사용하면 전통적인 인덱스에 비해 그 성능이 월등히 좋아진다.

WHERE 절을 추가해 필터링된 인덱스를 만들 수 있는데, 해당 값들이 모두 NULL이 아니거나 모두 NULL일 때만(인덱스에서 NULL을 사용하는 것은 ‘BETTER WAY 10. 인덱스를 만들 때는 널을 고려하자’ 참고) 제한해서 만들 수 있다. 필터링된 인덱스를 만들 때 사용하는 WHERE 절에서는 결정적 함수만 사용할 수 있고 OR 연산자는 사용할 수 없다(‘1장. 데이터 모델 설계’의 ‘결정적 함수와 비결정적 함수’ 참고). SQL Server에서는 몇 가지 추가 제약이 있다. 필터 조건에서는 계산 컬럼, UDT(User Defined Type)(사용자 정의 타입) 컬럼, 공간 데이터 타입 컬럼, hierarchyID 데이터 타입 컬럼, BETWEEN, NOT IN 연산자, CASE 문을 사용할 수 없다.

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