DB

클러스터 인덱스, 넌클러스터 인덱스 (Clustered Index)

Karla Ko 2024. 3. 29. 15:12
728x90

인덱스

  • 인덱스는 DB의 테이블에 데이터가 많을 때, 검색 속도를 향상시켜주기위해 사용하는 객체
  • 컬럼을 정렬한 후에 데이터를 빠르게 찾을 수 있도록 도와주는 역할

 

클러스터 인덱스

  • 테이블에 클러스터 인덱스를 적용할 때마다 그 테이블에 정렬 작업이 수반됨
  • 클러스터 인덱스는 Primary Key처럼 한 테이블에 한 개만 생성할 수 있음
  • 클러스터 인덱스는 데이터를 가리키는 포인터가 아닌 데이터를 저장한 블록의 포인터를 저장

 

넌클러스터 인덱스

  • 비 클러스터 인덱스는 책의 색인(Index)과 같은 역할
  • 데이터와 인덱스는 각각 다른 장소에 저장되므로 한 테이블에 여러 개의 비 클러스터 인덱스를 생성할 수 있음
  • 데이터를 가리키는 포인터를 저장

 

예시

  • id를 PK로 지정하여 id의 순서에 따라 정렬됨
  • email에 넌클러스트인덱스를 지정하여 email컬럼으로 검색을 빠르게 할 수 있음

 

책에 비유하자면
클러스터 인덱스는 페이지를 알기 때문에 바로 그 페이지를 펴는 것
넌클러스터 인덱스는 뒤에 목차에서 찾고자 하는 내용의 페이지를 찾고 그 페이지로 이동하는 것
테이블 스캔은 처음부터 한 장씩 넘기면서 내용을 찾는 것

 

  Clustered Nonclustered
사용 기록을 정렬하고 저장할 수 있음
cluster순서에 따라
물리적으로 메모리에 인덱스를 추가
데이터 행의 논리적 순서를 생성하는 데 도움됨
실제 데이터 파일에 대한 포인터를 사용
보관방법 인덱스의 리프 노드에 데이터 페이지를 저장 인덱스의 리프 노드에 데이터 페이지를 저장하지 않음
크기 상대적 작음
데이터 액세스 빠름 상대적 느림
추가 디스크 공간 필요하지 않음 인덱스를 별도로 저장해야 함
키 유형 기본적으로 테이블의 기본 키 복합 키 역할을 하는 테이블에 대한 고유 제약 조건과 함께
사용할 수 있음
주요 특징 데이터 검색 성능을 향상시킬 수 있음 조인에 사용되는 열에 생성되어야 함

 

 

728x90