1. 복합 인덱스(Composite Index)란?
- 복합 인덱스는 두 개 이상의 컬럼을 결합하여 생성한 인덱스입니다.
- MySQL에서는 최대 16개의 컬럼을 하나의 인덱스로 결합할 수 있습니다.
- 단일 복합 인덱스로 여러 유형의 쿼리 성능을 향상시킬 수 있습니다.
- 인덱스에 포함된 컬럼들의 순서가 쿼리 성능에 중요한 영향을 미칩니다.
2. 복합 인덱스의 작동 원리
- 복합 인덱스는 지정된 컬럼들의 값을 연결하여 정렬된 데이터 구조를 생성합니다.
- MySQL은 이 정렬된 구조를 활용하여 쿼리를 더 빠르게 실행합니다.
- 복합 인덱스는 다음 경우에 활용됩니다:
- 인덱스의 모든 컬럼을 테스트하는 쿼리
- 첫 번째 컬럼만 테스트하는 쿼리
- 첫 번째와 두 번째 컬럼을 테스트하는 쿼리
- 인덱스의 좌측부터 연속된 컬럼들을 테스트하는 쿼리
2.1 복합 인덱스의 내부 구조
- 복합 인덱스는 B-트리 구조로 구현되어 있습니다.
- 인덱스 노드는 복합 키(여러 컬럼 값의 조합)를 기준으로 정렬됩니다.
- 이 구조는 범위 검색과 정확한 일치 검색 모두에 효율적입니다.
팁
복합 인덱스의 컬럼 순서는 성능에 큰 영향을 미칩니다. 일반적으로 선택성(selectivity)이 높은 컬럼(고유한 값이 많은 컬럼)을 인덱스의 앞쪽에 배치하는 것이 좋습니다. Selectivity Cardinality 참고