1 분 소요

Clustered(클러스터형 인덱스) Index and Non-clustered Index(비클러스터형 인덱스)

  • 클러스터형 인덱스와 비클러스터형 인덱스는 데이터베이스에서 사용되는 인덱스 유형이다.
  • 대용량 데이터베이스에서 클러스터형 인덱스는 중요한 역할을 수행
    • 데이터 정렬 및 저장
    • 쿼리 성능 향상
    • 테이블의 기본 정렬
    • 클러스터형 인덱스의 한계
  • 비교
    • 클러스터형 인덱스는 데이터의 물리적인 저장 순서와 인덱스의 순서가 일치하며, 한 개의 테이블만 생성할 수 있다
    • 비클러스터형 인덱스는 데이터의 논리적인 정렬 순서를 따르는 인덱스이며, 인덱스를 여러 개 생성할 수 있다.
    • 각각의 인덱스 유형은 특정한 쿼리에 대한 검색 및 성능 요구사항에 맞게 선택되어야 한다.

클러스터형 인덱스

클러스터형 인덱스는 테이블의 데이터를 물리적으로 정렬하는 인덱스이다.

  • 하나의 테이블에는 한 개의 클러스터형 인덱스만 생성할 수 있다.
  • 클러스터형 인덱스는 생성하면 해달 테이블은 클러스터링 키(column)에 따라 정렬된다.
  • 데이터베이스의 물리적 구조를 변경하므로 테이블에 대한 쿼리 성능을 향상시킬 수 있다.
  • 사용 시 데이터가 저장되는 순서와 인덱스의 순서가 일치하기 때문에 범위 검색(range scan)에 유리한다.

클러스터형 인덱스 사용 시

  • 인덱스를 생성할 때는 데이터 페이지 전체를 다시 정렬한다.
  • 이미 대용량의 데이터가 입력된 상태라면, 클러스터형 인덱스를 생성하는 것은 심각한 시스템 부하를 줄 수 있으므로 신중해야 한다.
  • 클러스터형 인덱스는 자체의 리프 페이지가 곧 데이터 페이지이기 때문에 인덱스 자체에 데이터가 포함되어 있다고 말할 수 있다.
  • 비클러스터형 인덱스 보다 검색 속도는 더 빠르다.
    • 하지만, 데이터의 입력/수정/삭제는 느리다.
  • 클러스터 인덱스는 성능이 좋지만, 테이블에 한 개만 생성할 수 있기 때문에 어느 열에 클러스터형 인덱스를 생성하느냐에 따라서 시스템의 성능이 달라진다.

비클러스터형 인덱스

비클러스터형 인덱스는 테이블의 데이터를 논리적으로 정렬하는 인덱스이다.

  • 테이블에는 여러 개의 비클러스터형 인덱스를 생성할 수 있다.
  • 클러스터형 인덱스와 달리 데이터의 데이터의 물리적인 저장 순서와는 관계가 없다.
  • 인덱스 키(column)를 기반으로 정렬되며, 각 인덱스 항목에는 해당 레코드의 주소가 포함된다.
    • 따라서 비클러스터형 인덱스를 사용하면 인덱스의 순서와 실제 데이터의 순서가 다르기 때문에 테이블의 데이터를 검색할 때 인덱스를 참조하여 해당 레코드를 찾아야 한다.

비클러스터형 인덱스 사용 시

  • 비클러스터형 인덱스를 생성할 때는 데이터 페이지는 그냥 둔 상태에서 별도의 페이지에 인덱스를 구성한다.
  • 클러스터형 보다 검색 속도는 느리지만, 데이터의 입력/수정/삭제는 더 빠르다.
  • 비클러스터형 인덱스는 여러 개 생성할 수 있다.
    • 하지만 남용할 경우, 오히려 시스템의 성능을 떨어뜨린다.

업데이트: