FINAL JUDGMENT

NestJS 쿼리 최적화는 “요청 패턴 -> SQL 모양 -> 운영 지표”로 판단한다

한 번 고치고 끝나는 작업이 아니라 데이터가 늘 때마다 다시 측정하고 조정하는 반복 과정이다.

먼저 측정감으로 인덱스를 추가하지 않는다.
작게 변경한 번에 하나의 병목을 줄인다.
운영에서 확인실제 트래픽의 p95와 DB 부하로 검증한다.

Input: 요청 패턴

목록필터, 정렬, 페이지 크기
상세필요 관계와 컬럼 범위
쓰기 포함transaction 길이와 lock 범위

Tools: 바꿀 수 있는 SQL 모양

Indexscan rows 감소
Join / batchN+1 왕복 감소
Projection전송량과 메모리 감소
Pagination대량 조회 제한

Proof: 좋아졌는지 증명

EXPLAIN계획이 index 중심으로 바뀌었는가
Latencyp95 응답 시간이 줄었는가
DB loadCPU, I/O, lock wait가 줄었는가
Monitor느린 endpoint와 SQL을 찾는다.
Analyze실행 계획과 ORM 로그를 읽는다.
Refine가장 작은 변경을 적용한다.
Repeat데이터 증가에 맞춰 다시 조정한다.