EXPLAIN ANALYZE + 슬로우 쿼리 로그로 인덱스 부재 발견, 10배 단축
SQL 성능 진단에서 가장 먼저 보는 것은 실행 계획입니다. EXPLAIN ANALYZE로 쿼리가 어떤 순서로 실행되는지 확인하고, Full Scan이 발생하는 지점을 찾습니다. 프로젝트에서 집계 쿼리가 너무 느려서 원인을 찾았더니 WHERE 절 컬럼에 인덱스가 없었습니다.
인덱스를 추가하니 응답 시간이 10배 단축됐고, 그 이후로 쿼리를 작성할 때 실행 계획을 먼저 확인하는 습관이 생겼습니다. 슬로우 쿼리 로그를 설정해 임계 시간 이상 걸리는 쿼리를 자동으로 수집하는 방식도 씁니다. 인덱스 선택도(Selectivity) 개념을 배운 뒤에는 인덱스가 많다고 좋은 게 아니라, 쓰기 성능과의 트레이드오프를 함께 봐야 한다는 걸 알았습니다. 한계는 파티셔닝이나 샤딩 수준의 튜닝은 경험하지 못했습니다.