NEST · ORM
N+1 쿼리 before/after
목록 1번 조회 뒤 각 row마다 관계를 다시 조회하면 데이터가 조금만 늘어도 쿼리 수가 선형으로 폭증합니다.
쿼리 수 비교
query count
users: 1
사용자 목록 한 번 조회
posts: N
각 사용자마다 게시글 추가 조회
join/batch: 1~2
관계 로딩 또는 DataLoader로 묶음
stable cost
row 수 증가에도 왕복 수를 제한
users: 1
→
posts: N
→
join/batch: 1~2
→
stable cost
N+1 쿼리 선택 기준
점검
항상 필요
목록마다 쓰는 관계는 join/fetch join을 검토합니다.
조건부 필요
필드 선택에 따라 DataLoader가 더 유연합니다.
페이지네이션
join이 중복 row와 limit을 흔들지 않는지 봅니다.
로그 확인
개발 환경 SQL 로그로 실제 쿼리 개수를 셉니다.