비클러스터형 인덱스 만들기
테이블 또는 인덱싱된 뷰에 비클러스터형 인덱스를 여러 개 만들 수 있습니다. 일반적으로 비클러스터형 인덱스는 클러스터형 인덱스를 적용할 수 없고 자주 사용되는 쿼리의 성능을 개선하기 위해 만듭니다.
일반적인 구현 방법
비클러스터형 인덱스는 다음 방법으로 구현합니다.
PRIMARY KEY 및 UNIQUE 제약 조건
PRIMARY KEY 제약 조건을 만들 때 테이블에 클러스터형 인덱스가 없으며 고유 비클러스터형 인덱스를 지정하지 않은 경우 열에 고유 클러스터형 인덱스가 자동으로 생성됩니다. 기본 키 열에는 NULL 값이 허용되지 않습니다.
UNIQUE 제약 조건을 만들면 고유 비클러스터형 인덱스가 생성되어 기본적으로 UNIQUE 제약 조건을 적용합니다. 테이블에 클러스터형 인덱스가 없는 경우 고유 클러스터형 인덱스를 지정할 수 있습니다. 자세한 내용은 PRIMARY KEY 제약 조건 및 UNIQUE 제약 조건을 참조하십시오.
제약 조건의 영향을 받지 않는 인덱스
기본적으로 클러스터링 옵션을 지정하지 않으면 비클러스터형 인덱스가 생성됩니다. 각 테이블에서 만들 수 있는 최대 비클러스터형 인덱스 수는 999개입니다. 여기에는 PRIMARY KEY 또는 UNIQUE 제약 조건을 사용하여 생성된 인덱스가 포함되지만 XML 인덱스는 포함되지 않습니다.
인덱싱된 뷰의 비클러스터형 인덱스
뷰에 클러스터형 고유 인덱스를 만든 후 비클러스터형 인덱스를 만들 수 있습니다. 자세한 내용은 인덱싱된 뷰 만들기를 참조하십시오.
포괄 열이 있는 인덱스
쿼리에 사용할 비클러스터형 인덱스를 만들 때 키가 아닌 열을 인덱스 정의에 포함하여 쿼리에서 기본 검색 열로 사용되지 않는 열을 처리할 수 있습니다. 이 경우 쿼리 최적화 프로그램이 테이블이나 클러스터형 인덱스에 액세스하지 않고도 인덱스 내에서 필요한 모든 열 데이터를 찾을 수 있으므로 성능이 향상됩니다. 자세한 내용은 포괄 열이 있는 인덱스를 참조하십시오.
필터 조건자가 있는 인덱스
필터링된 인덱스는 특히 데이터의 잘 정의된 하위 집합에서 선택하는 쿼리를 처리하는 데 적합한 최적화된 비클러스터형 인덱스입니다. 이 인덱스에서는 필터 조건자를 사용하여 테이블의 일부 행을 인덱싱합니다. 잘 디자인된 필터링된 인덱스는 전체 테이블 인덱스에 비해 쿼리 성능을 개선하고 인덱스 유지 관리 비용과 인덱스 저장소 비용을 줄일 수 있습니다.
자세한 내용은 필터링된 인덱스 디자인 지침을 참조하십시오.
성능 고려 사항
쿼리에 사용되는 모든 열을 인덱스에 포함해야 하지만 열을 불필요하게 추가하지는 말아야 합니다. 인덱스 열(키 열 또는 키가 아닌 열)을 너무 많이 추가하면 다음과 같은 성능 관련 문제가 발생할 수 있습니다.
한 페이지에 들어가는 인덱스 행 수가 줄어들어 디스크 I/O가 늘어나고 캐시 효율성이 저하됩니다.
인덱스를 저장할 디스크 공간이 더 필요합니다.
인덱스 유지 관리로 인해 기본 테이블 또는 인덱싱된 뷰에 대한 수정, 삽입, 업데이트, 삭제 또는 병합 작업에 걸리는 시간이 늘어날 수 있습니다.
데이터 수정 작업 동안 성능이 저하되고 디스크 공간 요구 사항이 증가해도 쿼리의 성능 향상이 중요한지 결정합니다. 쿼리 성능을 평가하는 방법은 쿼리 튜닝을 참조하십시오.
테이블 데이터에 행의 잘 정의된 하위 집합이 포함된 열(예: 스파스 열, 값이 대부분 NULL인 열, 특정 범주의 값이 있는 열 및 특정 범위의 값이 있는 열)이 있는 경우 성능을 개선하려면 필터링된 인덱스를 사용해 보십시오. 자세한 내용은 필터링된 인덱스 디자인 지침을 참조하십시오.
테이블을 만들 때 PRIMARY KEY 또는 UNIQUE 제약 조건을 만들려면
기존 테이블에 PRIMARY KEY 또는 UNIQUE 제약 조건을 만들려면
인덱스를 만들려면