목차
주요 내용 요약
- 데이터베이스 인덱스 정의: 데이터 검색 최적화를 위한 부가 구조로, 조회 성능 향상과 DB 부하 감소가 주목적
- 인덱스 전략: 카디널리티가 높은 컬럼 우선 선정, 복합 인덱스 활용, Leftmost Prefix Rule 고려
- Full Table Scan 방지: 인덱스를 통해 디스크 I/O 비용 절감 및 검색 속도 향상
- 인덱스 종류: B-Tree가 기본이며, R-Tree(공간 데이터), Hash Index(동등 검색), Inverted List(전문 검색) 등 존재
- 성능 개선 사례: concert_schedules 테이블에서 복합 인덱스 적용으로 조회 시간 개선 (Full Table Scan 제거)
1. 인덱스의 기본 개념
1.1. 인덱스의 정의
<aside>
🚀 DB Index는 마치 책의 목차처럼 데이터를 식별하기 위한 부가 구조입니다.
- 목적: 데이터 검색 시 전체 테이블 스캔을 피하고, 조회 성능을 극대화하여 DB 부하를 줄이는 역할
- 원리: 특정 컬럼의 값을 정렬 또는 구조화하여 저장함으로써, 조건에 맞는 데이터를 빠르게 찾을 수 있도록 도와줍니다.
- 예를 들어, 1부터 100까지 무작위로 배치된 값들 중 30 미만의 데이터를 찾는 경우와, 오름차순 정렬된 값들 중 30 미만의 데이터를 찾는 경우를 비교하면 정렬된 상태의 인덱스가 훨씬 빠른 조회를 가능하게 합니다
</aside>
1.2. 인덱스의 목적과 원리
<aside>
🚀 인덱스 설계 및 활용 전략
- 핵심 컬럼 식별
- 조회·조인·정렬에 자주 사용되는 컬럼을 우선적으로 인덱싱합니다.
- 카디널리티(Cardinality) 고려
- 중복도가 낮은(=고카디널리티) 컬럼일수록 인덱스 효율이 높습니다.
- 복합 인덱스 설계
- 여러 컬럼을 함께 사용하는 쿼리에 대해
(col1, col2)
형태로 복합 인덱스를 생성해 다중 컬럼 검색을 최적화합니다.
- Leftmost Prefix Rule에 따라,
(col1, col2)
인덱스는 WHERE col1=?
또는 WHERE col1=? AND col2=?
에 최적화됩니다.
</aside>
2. 인덱스를 거는 이유
2.1. Full Table Scan이란?
- Full Table Scan : 테이블 내 모든 레코드를 처음부터 끝까지 읽어들이는 방식입니다.
- 이 경우 테이블 크기가 커질수록 디스크 I/O가 선형적으로 증가하여 성능 저하가 심화됩니다.
2.2. 인덱스를 사용하는 이유