코딩조각

Index 의 Cluster Index와 Non-Cluster Index를 구분하는 가장 쉬운 방법

밍튜 2022. 12. 10. 18:09
정의

Cluster의 사전적 의미를 찾아보면 : 군집, 무리

라는 의미가 있다.

 

Clusterd : 군집화

 

라는 의미로 Custered Index 는 '군집화된 인덱스' 라는 뜻이다.

 

Clusterd Index

출처 : youtube(우아한테크코스- Index/ 안돌)

저 그림에서 왼쪽은 '등수' index

오른쪽은 '유저' data에 해당한다.

 

이와같이 Clustered Index는 index와 data의 군집으로 이루어져있다.

 

index의 '등수'는 1~45의 순서대로 되어있어 데이터를 읽어올때 예들들어 41~43등으로 범위로 읽어오기가 매우 편하다.

 

이때 43등에 해당하는 '해리, leey94'대신 새로운 유저인 '브라운, probitanima'가 43등으로 들어오려면 어떻게 해야할까? 

 

출처 : youtube(우아한테크코스- Index/ 안돌)

43등이었던 '해리'를 44등으로 한칸씩, index도 하나씩 늘려 밀어내고 43등자리에 '브라운'을 끼워넣어야한다.

 

data의 양이 많아질수록 밀어야할 index와 data가 많아지므로

 

Clustered index의 경우 읽기엔 매우 빠른반면 추가시킬때는 매우 비효율적이다.

 

Non-Clusterd Index

Non-Clustered 의 같은 경우는 clustered index와 달리 data와 직접적으로 연결되어있지 않고,

 

사진에서와 같이 45등은 - 123이라는 다른 인덱스와 연결되어있다.(간접참조, Hash Table로 연결됨)

 

123을 찾으면 뚱이가 45등인지 찾을수 있게 되어있다.

 

Index가 순서대로 되어있지 않아도 참조 Index가 다르기때문에 Insert하기에 매우 편하다.

 

 

결론

Clustered Index는 Data와 Index가 직접 1:1로 연결되어있고,

 

Non Clustered Index는 Index- 다른Index- Data의 관계로 되어있다.