설계 판단

인덱스는 자주 쓰는 쿼리를 가장 적은 수의 구조로 빠르게 만드는 작업입니다.

출발점은 대표 쿼리이고, 설계의 끝은 운영 비용 점검입니다. 조회 속도만 보지 말고 쓰기 비용과 실제 사용 여부까지 함께 판단해야 합니다.

대표 쿼리에서 선두 컬럼이 정해집니다
WHERE user_id = ? AND status = 'PAID' ORDER BY created_at DESC

자주 반복되는 조건과 정렬 순서를 먼저 읽어야 어떤 인덱스를 만들지 결정할 수 있습니다.

1. 패턴 파악

무슨 조회가 자주 실행되는지 먼저 본다

WHERE JOIN ORDER BY

자주 쓰는 조건과 정렬이 인덱스 설계의 기준입니다. 사용 빈도가 낮은 쿼리에 맞춰 인덱스를 늘리면 유지 비용만 커집니다.

2. 복합 인덱스

여러 조회를 하나의 인덱스로 함께 커버한다

INDEX (user_id, status, created_at)

선두 컬럼을 대표 조건에 맞추고, 뒤에 정렬이나 추가 필터를 배치하면 여러 쿼리를 하나의 복합 인덱스로 처리할 수 있습니다.

3. 운영 비용

읽기 이득이 쓰기 비용보다 큰지 끝까지 확인한다

균형
읽기 최적화는 커지지만 INSERT, UPDATE, DELETE 때는 인덱스도 함께 갱신됩니다.
개수
테이블당 인덱스는 보통 3~5개 안에서 시작하고, 필요한 것만 남깁니다.
정리
주기적으로 사용 현황을 보고 사용되지 않는 인덱스는 제거해야 쓰기 성능 저하를 막을 수 있습니다.