토픽 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