키워드
Clustered Index
Non Clustered Index
노트
- Clustered Index
- 군집화된 인덱스
- 데이터의 직접적인 위치를 가리키는 인덱스
- Clustered Index에 따라 저장하는 순서가 정해진다.
- Clustered Index는 테이블당 하나만 존재한다.
- 가장 대표적인 예시로 PK 인덱스를 설정하는 경우를 생각해보자
- Clustered Index로 설정
- MySQL (Inno DB) 에서는 기본적으로 테이블이 Clustered Index 구조로 생성이 된다.
- 추가적인 저장공간을 필요로 하지 않는다.
- Non Clustered Index
- 군집화되지 않은 인덱스
- 테이블당 여러개 생성될 수 있다.
- 테이블에 PK를 제외한 나머지 칼럼에 인덱스를 거는 경우를 생각해보자
- 인덱스는 각 데이터를 가리키고 있다
- 정렬순서는 인덱스의 설정에 맞게 정렬된다.
- Non Clustered Index로 접근하는 경우 해당 인덱스가 가리키는 값이 아닌 값을 가저오기 위해서는 해당 칼럼이 존재하는 데이터에 직접 접근해야한다.
- 위의
- 유의할점이 있는데, Clustered Index 와 Non Clustered Index는 MySQL에서만 유효한 개념이다. Postgres에서는 Clustered Index 라는 개념이 없다. 대신 Clustered Table이라는 개념이 있다.
- Cluster 명령어릉 통해 테이블의 정렬을 Clustered Table 상태로 바꾸는 것이 가능하다.
요약
요약: Clustered Index 는 테이블 전체에 대해 하나만 존재하는 데이터의 저장 위치를 결정하는 인덱스, Non Clustered Index는 일반적으로 사용하는 데이터의 색인을 정렬하고 가져올 때는 실제 데이터 위치에 접근하는 인덱스