목록 한 번 뒤에 항목 수만큼 더 묻는다
목록 1회로 사용자 100명을 읽고 1명당 관계 질의를 따로 보내면 1 + 100 = 101번 왕복해. 요청당 질의 수를 세어 봐. 5번이면 충분한 페이지가 500번을 실행한다면 N+1을 의심해야 해.
로그에서 반복을 찾아
Django Debug Toolbar, Rails Bullet, SQLAlchemy의 events처럼 요청당 질의를 세는 도구로 발견해. SQLAlchemy는 selectinload, Django는 prefetch_related, Rails는 includes로 관계를 미리 불러와.
JOIN·IN·집계로 고쳐
미리 불러오기로 두 번에 가져오거나 한 JOIN으로 합치고, 사용자별 개수만 필요하면 COUNT(*) ... GROUP BY user_id처럼 SQL에서 집계해.