[sql] 클러스터형 인덱스와 비클러스터형 인덱스의 차이는 무엇인가요?

클러스터형 인덱스(Clustered Index)

클러스터형 인덱스는 인덱스 키의 순서대로 데이터 레코드를 정렬한 형태로 저장됩니다. 이는 테이블당 하나의 클러스터형 인덱스만 가질 수 있으며, 데이터 레코드의 물리적인 순서와 같습니다. 따라서 클러스터형 인덱스를 갖는 테이블에서 인덱스 키 값을 기반으로 데이터를 검색하면 레코드의 물리적인 위치를 바로 찾아낼 수 있어 검색 성능이 향상됩니다.

비클러스터형 인덱스(Non-Clustered Index)

비클러스터형 인덱스는 인덱스 키의 순서대로 정렬된 별도의 데이터 구조를 갖고 있으며, 해당 인덱스 구조에는 실제 데이터 레코드의 포인터가 포함되어 있습니다. 따라서 인덱스 키 값을 기반으로 레코드의 위치를 먼저 찾은 후, 해당 위치로 이동하여 실제 데이터를 검색합니다. 비클러스터형 인덱스를 갖는 테이블에서의 데이터 검색은 레코드의 물리적인 순서와는 무관하게 이뤄지며, 이로 인해 클러스터형 인덱스에 비해 조금 더 오버헤드가 발생할 수 있습니다.

따라서, 클러스터형 인덱스는 데이터의 물리적인 순서에 따라 질의의 성능이 좌우될 수 있는 경우에 유용하며, 비클러스터형 인덱스는 테이블의 순서와 무관하게 레코드를 빠르게 찾을 수 있도록 하는데 유용합니다.