본문 바로가기

DB

[DB] 클러스터드 vs 넌클러스터드 인덱스

📌 클러스터드 인덱스 (Clustered Index)

  • 실제 데이터가 인덱스 순서대로 정렬되어 저장됩니다.
  • 즉, 인덱스 자체가 데이터입니다.
  • 한 테이블에 하나만 존재 가능 (정렬이 하나 기준이니까)

✅ 장점

  • 범위 조회에 빠름 (BETWEEN, ORDER BY)
  • 접근 시 디스크 I/O가 줄어듦

❌ 단점

  • 데이터 삽입/삭제 시 정렬 유지해야 하므로 성능 저하 가능
  • 한 테이블당 하나만 가능

 

📌 넌클러스터드 인덱스 (Non-Clustered Index)

  • 인덱스와 실제 데이터가 분리되어 있음
  • 인덱스에는 데이터의 포인터만 저장되어 있고, 필요한 값은 본문에서 추가로 읽음 (lookup)

✅ 장점

  • 다양한 컬럼에 여러 개 생성 가능
  • 클러스터드 인덱스 외 다른 조건도 최적화 가능

❌ 단점

  • 인덱스로 찾고 → 다시 테이블 접근 (lookup) 필요해서 I/O 증가
  • 여러 컬럼을 한번에 찾는 데는 부적합할 수 있음