Learning
토픽 60 / 201·인덱스 및 쿼리 최적화

인덱스 (Index)

인덱스 (Index)

데이터베이스에서 테이블의 검색 속도를 향상시키기 위해 별도로 저장되는 데이터 구조로, 책의 색인(Index)과 유사하게 원하는 데이터의 위치를 빠르게 찾아줌

목적: 검색 성능 향상, 정렬 성능 향상, 고유성 보장

특징

  • 조회 성능 향상 (Full Scan → Index Scan)
  • 삽입/수정/삭제 성능 저하 (인덱스 유지보수)
  • 추가 저장공간 필요 (테이블의 10~20%)

구조별 유형

  • B-Tree/B+Tree: 균형 트리, 범용, RDBMS 기본
  • Hash: 해시 함수, 동등 검색 특화
  • Bitmap: 비트맵, 저카디널리티, OLAP
  • Full-Text: 전문 검색, 텍스트 검색

형태별 유형

  • 클러스터드 인덱스: 데이터 물리 정렬, 테이블당 1개
  • 논클러스터드 인덱스: 별도 인덱스 구조, 여러 개 가능
  • 복합 인덱스: 2개 이상 컬럼 조합
  • 커버링 인덱스: 쿼리에 필요한 모든 컬럼 포함
  • 함수 기반 인덱스: 함수 적용 결과로 인덱스

인덱스 생성 기준

  • WHERE, JOIN, ORDER BY에 자주 사용되는 컬럼
  • 카디널리티(Cardinality)가 높은 컬럼
  • 조회 빈도가 높고 변경 빈도가 낮은 컬럼

인덱스 미적용 경우

  • 소량 데이터 테이블
  • 조회보다 DML이 빈번한 테이블
  • 카디널리티가 매우 낮은 컬럼

적용사례: 대용량 테이블 검색, 조인 최적화, 정렬 최적화

비교: B-Tree(범위) vs Hash(동등) vs Bitmap(저카디널리티)

연관: 쿼리 옵티마이저, 실행계획, 튜닝, B+Tree