◎ 클러스터형 인덱스 (Clustered Index)
-
정의
- 키 값에 대한 테이블의 데이터 행을 정렬하는 인덱스의 한 유형
- 테이블의 데이터를 정렬해서 저장되는 순서를 정의
-
특징
- 테이블당 하나만 생성 가능
- 행 데이터를 인덱스로 지정한 열에 맞춰서 자동으로 정렬함
◎ 보조 인덱스 (비클러스터형 인덱스 / Nonclustered Index)
-
정의
- 데이터와 인덱스를 각각 다른 위치에 저장
- 인덱스는 해당 데이터의 위치에 대한 포인터를 포함하고 있다.
-
특징
- 테이블당 여러 개 생성 가능
- 찾아보기에서 먼저 단어를 찾은 후 그 옆에 표시된 페이지로 이동하여 원하는 내용을 찾는 것과 같은 개념
◎ MySQL에서 클러스터형 인덱스, 보조 인덱스
MySQL에서 클러스터형 인덱스
- MySQL의 PK는 클러스터 인덱스다.
- 각 Table마다 PK(클러스터 키)와 데이터 주소 쌍의 인덱스를 가지고 있다.
- PK 조건을 통한 조회는 클러스터형 인덱스를 통해 빠르게 조회가 가능하다.
- PK 순서에 따라서 데이터 저장 위치가 변경된다.
- PK 삽입/갱신시에 성능이슈 발생 가능성이 높다.
(데이터 주소가 순차적으로 밀림)
MySQL에서 보조 인덱스
- 정렬 관련 데이터와 PK가 쌍을 이루고 있는 데이터이다.
- 위치에 대한 포인터 : PK
- 데이터 정보를 직접 갖고 있지 않기 때문에, PK의 데이터 위치가 변경될 때 (보조) 인덱스는 영향을 받지 않는다.
◎ 보조 인덱스를 이용한 탐색 과정
상황 : 이름 순서대로 정렬된 보조 인덱스가 존재하고, 이름이 "이"로 시작하는 사람들 조회
- (보조) 인덱스의 정렬된 정보를 통해 관련한 PK들을 빠르게 찾음
- 클러스터 인덱스가 PK순으로 정렬되어 있으므로 데이터의 저장 위치를 빠르게 찾음
- 저장 위치에 가서 정보를 가져옴
◎ 참고 자료