25.01.03 TIL 복합 인덱스

신성훈·2025년 1월 3일
0

TIL

목록 보기
112/162

1. 복합 인덱스란?

복합 인덱스(Composite Index)는 데이터베이스의 두 개 이상의 열(Column)을 조합하여 생성된 인덱스입니다.
단일 열에 대한 인덱스와 달리, 다중 조건 검색에 최적화되어 성능을 향상시킬 수 있습니다.


2. 복합 인덱스의 특징

  • 순서 의존성:
    • 인덱스를 생성할 때 지정된 열의 순서가 검색 조건에 영향을 미침
    • 예를 들어, (A, B) 순서로 생성된 복합 인덱스는 A 또는 A, B로 검색할 때만 활용 가능
    • 단, B만 단독으로 조건에 사용되면 인덱스가 활용되지 않음
  • 범위 조건:
    • 범위 조건이 포함되면 이후 열에 대한 인덱스는 효율성이 떨어질 수 있음
    • 예: WHERE A = 10 AND B > 20에서 B > 20 이후 열의 인덱스는 사용되지 않을 가능성 있음

3. 복합 인덱스의 장점

  1. 다중 조건 검색 최적화:

    • 두 개 이상의 열을 조합하여 검색할 때 성능이 향상됨
  2. 디스크 I/O 감소:

    • 데이터를 읽는 횟수가 줄어듦
  3. 유연한 검색:

    • 순서에 맞는 검색 조건에서는 단일 열 인덱스보다 더 효율적

4. 복합 인덱스의 단점

  1. 추가적인 저장 공간 필요:

    • 단일 인덱스보다 많은 공간을 차지함
  2. 데이터 변경 시 성능 저하:

    • 데이터 삽입, 수정, 삭제 시 복합 인덱스의 재구성이 필요함
  3. 올바른 순서로 사용해야 효율적:

    • 열의 순서를 잘못 설정하거나 쿼리에 맞지 않게 사용하면 성능이 저하될 수 있음

5. 복합 인덱스 생성 예제

복합 인덱스 생성

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;

6. 복합 인덱스 설계 시 고려사항

  1. 쿼리 사용 패턴 분석:

    • 주로 사용되는 조건의 열을 기준으로 인덱스를 생성
  2. 선택도(Selectivity) 높은 열 우선:

    • 조건에 따라 데이터가 잘 구분될 수 있는 열을 앞에 배치
  3. 범위 조건 고려:

    • 범위 조건이 포함된 열을 복합 인덱스의 뒤쪽에 배치

7. 마무리

복합 인덱스를 학습하며 올바르게 설계된 인덱스가 데이터베이스 성능 최적화에 매우 중요한 역할을 한다는 점을 깨달았습니다.
단순히 인덱스를 추가하는 것이 아닌 쿼리 패턴 분석과 열 순서 최적화가 필요하다는 점을 기억해야겠습니다.

profile
조급해하지 말고, 흐름을 만들고, 기록하면서 쌓아가자.

0개의 댓글