QUERY OPTIMIZATION MAP

느린 쿼리는 API, ORM, DB를 같이 봐야 고친다

응답 시간이 느릴 때는 SQL 한 줄만 보지 말고 요청 화면, 관계 로딩, 인덱스, 반환 데이터 크기를 한 흐름으로 점검한다.

응답 지연API latency가 DB 실행 시간에 끌려간다.
리소스 상승CPU, I/O, connection 대기가 늘어난다.
비용 증가불필요한 scan과 전송량이 누적된다.
동시성 저하긴 transaction과 lock이 요청을 막는다.

Request shape

화면이 필요한 데이터정말 보여줄 컬럼과 관계만 고른다.
필터와 정렬WHERE, JOIN, ORDER BY가 인덱스 후보가 된다.
대량 조회페이지네이션 없이는 네트워크와 메모리가 먼저 막힌다.

NestJS / ORM layer

Repository find편하지만 관계 로딩과 SELECT 범위가 숨겨질 수 있다.
QueryBuilderjoin, select, where를 명시해 SQL 모양을 통제한다.
개선 후보projection, join, batch loading, cursor pagination을 선택한다.

Database engine

EXPLAINscan 방식, 사용 인덱스, rows 예측을 확인한다.
Index읽기는 빨라지지만 쓰기 비용과 저장 공간이 든다.
Lock / transaction긴 작업은 다른 요청의 대기 시간으로 보인다.
rows가 많다pagination과 select 축소부터 본다.
쿼리 수가 많다N+1을 join 또는 batch로 바꾼다.
scan이 크다필터와 정렬 컬럼의 인덱스를 본다.
락이 길다transaction 범위와 격리 수준을 줄인다.