rows read와 반환 row 수를 분리해서 봅니다.
느린 조회는 네 질문으로 먼저 좁힌다
인덱스, N+1, 페이지네이션, projection은 NestJS ORM 병목을 빠르게 분류하는 1차 판단 기준입니다.
같은 SQL 반복과 관계 로딩 방식을 봅니다.
화면에 없는 컬럼과 관계를 줄입니다.
정렬, 락, 네트워크 전송을 함께 봅니다.
큰 scan을 만드는 WHERE/ORDER BY를 줄입니다.
반복 SQL은 join 또는 batch loading으로 바꿉니다.
대량 row를 한 번에 가져오지 않습니다.
SELECT *와 큰 컬럼을 필요한 값으로 줄입니다.
반복 SQL과 느린 SQL을 찾습니다.
EXPLAIN으로 rows와 index를 봅니다.
가장 작은 레버부터 바꿉니다.
전후 지표가 좋아졌는지 확인합니다.
핵심: 먼저 병목 유형을 좁히고, 가장 작은 변경으로 하나씩 확인한다.