- 클러스터드 인덱스 & 논클러스터드 인덱스
클러스터드 인덱스(Clustered Index)와 논클러스터드 인덱스(Non-clustered Index)는 데이터베이스에서 데이터를 효율적으로 검색하기 위해 사용되는 인덱스 유형입니다. 다음은 각각의 개념과 주요 차이점을 설명해 드리겠습니다:
1. 클러스터드 인덱스(Clustered Index):
- 클러스터드 인덱스는 테이블의 실제 데이터 행을 정렬된 형태로 저장하는 방식입니다.
- 테이블당 하나의 클러스터드 인덱스만 생성할 수 있으며, 클러스터드 인덱스가 없는 테이블은 힙(Heap) 구조로 데이터가 저장됩니다.
- 클러스터드 인덱스는 주로 테이블의 기본 키(Primary Key)에 대해 생성되는 경우가 많습니다.
- 클러스터드 인덱스를 통해 데이터를 검색할 때는 해당 키의 순서에 따라 연속된 블록을 읽어오므로, 범위 검색이나 정렬 작업에 높은 성능을 제공합니다.
2. 논클러스터드 인덱스(Non-clustered Index):
- 논클러스터드 인덱스는 인덱스 키와 해당 키를 가진 행의 실제 데이터 위치를 가리키는 포인터로 구성됩니다.
- 하나의 테이블에 여러 개의 논클러스터드 인덱스를 생성할 수 있습니다.
- 논클러스터드 인덱스는 테이블의 정렬되지 않은 데이터를 인덱스로 조직화하여 검색을 빠르게 수행할 수 있도록 합니다.
- 논클러스터드 인덱스를 통해 데이터를 검색할 때는 인덱스 키를 기반으로 해당 행의 위치를 찾은 다음, 추가적인 I/O 작업을 통해 실제 데이터를 가져옵니다.
- 주요 차이점
- 데이터 정렬: 클러스터드 인덱스는 데이터 행 자체를 정렬된 상태로 저장하지만, 논클러스터드 인덱스는 데이터를 정렬되지 않은 상태로 저장하고 인덱스만 정렬합니다.
- 인덱스 유일성: 클러스터드 인덱스는 테이블의 기본 키로 생성되어 기본 키의 유일성을 보장합니다. 반면, 논클러스터드 인덱스는 기본 키가 아니더라도 중복된 값을 가질 수 있습니다.
- 데이터 액세스: 클러스터드 인덱스는 인덱스 키의 순서에 따라 데이터를 연속적으로 읽어오므로 범위 검색이나 정렬 작업에 높은 성능을 제공합니다. 반면, 논클러스터드 인덱스는 인덱스 키를 기반으로 해당 행의 위치를 찾은 다음, 추가적인 I/O 작업을 통해 실제 데이터를 액세스합니다.
- 인덱스 크기: 일반적으로 논클러스터드 인덱스는 클러스터드 인덱스보다 작은 크기를 가지며, 테이블에 대한 보조적인 인덱스 역할을 수행합니다.
클러스터드 인덱스와 논클러스터드 인덱스는 각각의 특징과 사용 목적에 따라 데이터베이스 설계 시 선택되고 구현됩니다.
테이블의 구조와 쿼리 패턴에 따라 적합한 인덱스 유형을 선택하여 데이터 검색 및 조작 성능을 최적화 가능합니다.
반응형
'DATABASE' 카테고리의 다른 글
데이터베이스는 어떠한 구조로 데이터를 저장할까? (0) | 2023.06.20 |
---|