데이터베이스 인덱스(Index)를 설명하고, 클러스터드 인덱스(Clustered Index)와 논클러스터드 인덱스(Non-Clustered Index)를 비교하여 설명하시오.

1. 데이터베이스 인덱스(Index)의 개념

  • 정의: 데이터베이스 테이블에서 검색 성능을 향상시키기 위해 사용하는 보조 자료구조. 책의 목차와 유사한 역할 수행.
  • 목적: 데이터 검색 속도 향상, 정렬/조인 성능 개선.
  • 단점: 인덱스 생성/유지에 따른 추가 저장공간 필요, DML(INSERT/UPDATE/DELETE) 작업 시 성능 저하 가능.
  • 구조: 일반적으로 B-Tree, B+Tree, Hash 등을 활용.

 

2. 클러스터드 인덱스(Clustered Index)

  • 정의: 인덱스의 정렬 순서에 따라 실제 데이터 레코드가 물리적으로 재배열된 인덱스.
  • 특징:
    • 테이블당 하나만 생성 가능 (데이터 자체가 정렬되기 때문).
    • 기본 키(Primary Key)가 지정되면 기본적으로 클러스터드 인덱스가 생성되는 경우가 많음.
    • 범위 검색 및 순차 조회에 유리.

 

3. 논클러스터드 인덱스(Non-Clustered Index)

  • 정의: 인덱스가 별도의 객체로 생성되고, 데이터는 원래 순서를 유지하면서 인덱스에서 실제 데이터의 위치(Row Pointer)를 가리키는 구조.
  • 특징:
    • 한 테이블에 여러 개 생성 가능.
    • 인덱스와 실제 데이터가 분리되어 존재. (실제 데이터는 정렬되어 있지 않음)
    • 임의 접근(Random Access)에 유리.

 

4. 클러스터드 인덱스 vs 논클러스터드 인덱스 비교

구분  클러스터드 인덱스 (Clustered) 논클러스터드 인덱스 (Non-Clustered)
데이터 저장 방식 인덱스 순서에 맞게 데이터 자체가 정렬되어 저장 인덱스와 데이터가 분리, 인덱스는 데이터 위치를 가리킴
개수 제한 테이블당 1개 여러 개 생성 가능
성능 특성 범위 검색, 정렬, 순차 조회에 유리 임의 접근, 특정 값 조회에 유리
저장 구조 인덱스 = 데이터 인덱스 ≠ 데이터 (별도 구조 + 포인터)
생성 예 기본 키(Primary Key) 보조 키(Secondary Key), 자주 검색되는 칼럼

 

5. 결론

  • 인덱스는 데이터베이스 검색 성능 최적화에 필수적인 기술로, 사용 패턴에 맞는 인덱스 전략 수립이 중요하다.
  • 클러스터드 인덱스는 정렬 및 범위 조회 중심, 논클러스터드 인덱스는 다양한 조건 검색 중심으로 활용된다.

+ Recent posts