N+1 문제는 필드 resolver가 parent 항목마다 한 번씩 실행되고 매 실행이 각자의 데이터베이스 쿼리를 날릴 때 발생합니다. N개의 post 목록을 가져온 뒤 각 post의 author를 가져오면 post에 대한 1개의 쿼리 + author에 대한 N개의 쿼리 — 부하가 걸리면 성능을 무너뜨리는 N+1번의 round trip이 발생합니다.
왜 발생하는가
resolver는 필드마다, 항목마다 실행됩니다. Post.author는 목록의 모든 post에 대해 개별적으로 실행되고, 각 실행은 서로를 알지 못하므로 각자 자신의 findById를 수행합니다.
