clustered Index vs non-clustered Index (MYSQL기준)

2024. 2. 21. 09:32CS/DB

clustered Index

  • 특정 나열된 데이터들을 일정 기준으로 정렬해주는 인덱스이다. (ex: 영어사전) 그래서 클러스터형 인덱스 생성 시에는 데이터 페이지 전체가 다시 정렬된다.
  • 하지만, 이러한 정렬 특징 때문에, 이미 대용량의 데이터가 입력된 상태라면 클러스터형 인덱스 생성은 심각한 시스템 부하를 줄 수 있다.
  • 한개의 테이블에 한개씩만 만들 수 있다. (ex: pk)
  • 본래 인덱스는 생성 시, 데이터들의 배열정보를 따로 저장하는 공간을 사용하나, 클러스터 인덱스는 따로 저장하는 정보 공간을 적게 사용하면서 테이블 공간 자체를 활용한다.
  • 인덱스 자체의 리프 페이지가 곧 Data이기 때문에, 인덱스 자체에 데이터가 포함되어있다고 볼 수 있다.
  • 보조 인덱스(non-clustered Index)보다 검색 속도는 더 빠르다.
  • 하지만 CUD는 보조 인덱스에 비해 더 느리다.
  • Mysql에서는 pk가 있다면 pk를 Clustered index로, pk가 없다면 UNIQUE하면서 NOT NULL인 컬럼을 Clustered index로,
  • 이것조차 없다면 임의로 보이지 않는 컬럼을 만들어 Clustered index로 지정한다.

non-clustered Index (보조 인덱스)