쿼리 최적화는 로그, 실행 계획, 지표를 반복해서 맞추는 루프다

느린 SQL을 찾고, DB가 어떻게 읽는지 본 뒤, 수정 후 실제 latency와 리소스가 좋아졌는지 다시 확인합니다.

ORM logging

반복 SQL과 예상보다 큰 SELECT를 찾습니다.

EXPLAIN

index 사용, rows 추정, scan 방식을 읽습니다.

DB metrics

CPU, I/O, lock, connection 대기를 봅니다.

1

느린 지점 포착

API latency와 slow query log에서 후보 SQL을 분리합니다.

2

실행 계획 읽기

풀 스캔, 임시 정렬, 과도한 rows를 확인합니다.

3

쿼리 모양 수정

index, join, select, pagination 범위를 조정합니다.

4

전후 비교

p95, query count, rows read, DB 리소스를 비교합니다.

type / access

index lookup인지 full scan인지 확인합니다.

rows

읽을 것으로 예상한 행 수가 과도한지 봅니다.

extra

sort, temp table, filter 조건을 추적합니다.

핵심: 수정 전후 숫자를 남겨야 최적화가 감이 아니라 검증 가능한 변경이 된다.