IT 이야기/DB

[DB 기술면접] 클러스터 인덱스, 넌클러스터 인덱스 차이점은?

하늘봉 2022. 9. 8. 12:00
반응형

SQL Server 에서는 인덱스를 클러스터 인덱스넌클러스터 인덱스로 나눌 수 있습니다.

이 둘의 가장 큰 차이점은 리프 페이지 구조인데요.

각각의 특징을 살펴보도록 하겠습니다.

 

클러스터 인덱스

1. 인덱스의 리프 페이지가 곧 데이터 페이지이다.

2. 이 데이터 페이지에 있는 데이터는 클러스터 인덱스의 키 컬럼으로 모두 정렬되어 있다.

 

아래와 같이 클러스터 인덱스를 만들어보자 

CREATE CLUSTERED INDEX IDX__CUST_TABLE__TEST ON dbo.CUST_TABLE(cust_no, svc_nation_cd)

 

마지막 리프 페이지에는 인덱스 키 컬럼 외 나머지 컬럼 정보가 저장됩니다.

 

 

넌클러스터 인덱스

넌클러스터 인덱스의 리프 페이지 구조는 해당 테이블에 클러스터 인덱스가 있냐 없냐에 따라서 또 달라집니다

 

클러스터 인덱스가 없을 때의 넌클러스터 인덱스

클로스터 인덱스가 없는 테이블을 힙 테이블이라고 합니다.

힙 테이블에 넌클러스터 인덱스를 생성하면 인덱스는 리프 페이지에 rid 값 정보를 저장하며

컬럼 정보가 필요하다면 SQL Server는 rid 값을 해석하여 해당 로우의 위치를 찾아냅니다.

 

클러스터 인덱스가 있을 때의 넌클러스터 인덱스

클러스터 인덱스가 있는 테이블에 넌클러스터 인덱스를 생성하면 
넌클러스터 인덱스의 리프 페이지에는 rid 값 대신 클러스터 인덱스의 키 값을 갖게 됩니다.

 

이 때는 컬럼 정보가 필요하다면 rid 값을 해석하여 테이블 로우를 찾아가는 게 아니라

리프 페이지에 저장된 클러스터형 인덱스의 키 값으로 다시 클러스터 인덱스를 탐색하여 필요한 칼럼 값을 얻습니다.

반응형