복합 인덱스(Composite Index)는 데이터베이스의 두 개 이상의 열(Column)을 조합하여 생성된 인덱스입니다.
단일 열에 대한 인덱스와 달리, 다중 조건 검색에 최적화되어 성능을 향상시킬 수 있습니다.
(A, B) 순서로 생성된 복합 인덱스는 A 또는 A, B로 검색할 때만 활용 가능B만 단독으로 조건에 사용되면 인덱스가 활용되지 않음WHERE A = 10 AND B > 20에서 B > 20 이후 열의 인덱스는 사용되지 않을 가능성 있음다중 조건 검색 최적화:
디스크 I/O 감소:
유연한 검색:
추가적인 저장 공간 필요:
데이터 변경 시 성능 저하:
올바른 순서로 사용해야 효율적:
CREATE INDEX composite ON orders(order_date, customer_id);
-- 활용됨: 순서에 맞게 열을 사용
SELECT * FROM orders WHERE order_date = '2023-12-23' AND customer_id = 101;
-- 부분 활용: 첫 번째 열만 조건으로 사용
SELECT * FROM orders WHERE order_date = '2023-12-23';
-- 활용되지 않음: 두 번째 열만 조건으로 사용
SELECT * FROM orders WHERE customer_id = 101;
DROP INDEX composite;
쿼리 사용 패턴 분석:
선택도(Selectivity) 높은 열 우선:
범위 조건 고려:
복합 인덱스를 학습하며 올바르게 설계된 인덱스가 데이터베이스 성능 최적화에 매우 중요한 역할을 한다는 점을 깨달았습니다.
단순히 인덱스를 추가하는 것이 아닌 쿼리 패턴 분석과 열 순서 최적화가 필요하다는 점을 기억해야겠습니다.