MSSQL CLUSTERED INDEX와 NONCLUSTERED INDEX 차이점

테이블에 인덱스를 생성하거나 추가하는 경우가 많습니다.

인덱스를 추가하는 쿼리는 CREATE INDEX ~ON ~을 사용합니다.

CREATE INDEX 문으로 추가를 할 때 CLUSTERED 또는 NONCLUSTERED 를 설정할 수 있습니다.

어떠한 차이가 있는지 살펴보겠습니다.

 

클러스터 인덱스와 넌클러스터 인덱스

먼저 두개를 간략하게 비교해보면

  CLUSTERED  NONCLUSTERED
 인덱스  테이블당 1개만 가능 테이블에 여러개 가능(240개 정도)
 정렬  물리적으로 행을 정렬  물리적으로 행을 정렬 안함

 

클러스터 인덱스는 데이터를 등록할 때 지정한 인덱스 키로 다시 정렬을 해 값을 저장합니다.

반면 넌클러스터 인덱스는 데이터를 등록할 때 지정한 인덱스로 다시 정렬하지 않습니다.

흔히 비교하는 책의 목록으로 말하면 클러스터 인덱스는 책의 앞부분에 있는 목차라고 할 수 있습니다.

어디에 어떤 내용이 있는지 순서대로 정렬되어 있습니다.

넌클러스터 인덱스는 책 가장 뒤에 있는 찾기 목록이라고 할 수 있습니다.

정렬되어 있는 기준은 다르지만 찾기 목록에서 원하는 카테고리 내용을 찾아 쉽게 찾을 수 있게 되어있습니다.

이러한 차이로 인해 클러스터 인덱스는 테이블에 1개만 설정 가능합니다.

넌클러스터 인덱스는 테이블에 여러개 설정할 수 있습니다.

댓글