Clustered Index
클러스터드 인덱스의 개념을 이해하기 위해선 B-Tree와 B+Tree 대해서 이해가 있다면 쉽다
관련된 링크는 다음과 같이 참고할 수 있다
- [Data Structure] B-Tree
- [Data Structure] B+Tree
- [MySQL] Storage Engine
클러스터드 인덱스는 Mysql Inno DB 스토리지 엔진에서 Primary Key가 설정된 컬럼에 자동으로 적용된다
테이블마다 하나의 컬럼에만 클러스터드 인덱스가 적용된다
클러스터드 인덱스가 적용된 컬럼은 B+Tree로 관리되며 디스크에 정렬된 형태로 존재하기 때문이다
디스크에 정렬된 상태로 존재하기 때문에 중간에 있는 데이터를 삽입 / 삭제 할 때 성능의 저하가 발생한다
Non-Clustered Index
넌클러스터드 인덱스는 B+Tree로 관리된다
클러스터드 인덱스와는 다르게 디스크에 정렬된 상태로 존재하지 않는다
넌클러스터드 인덱스를 위한 참조 테이블을 가지게 되며 테이블의 리프에는 실제 데이터가 위치한 디스크의 주소정보를 가지게 된다
데이터의 주소정보를 참조하여 실제 데이터에 access한다