Next.js + Prisma 조합으로 API를 만들고 있는데, 유저 목록과 각 유저의 게시글 수를 함께 가져오려고 합니다.
현재 코드가 이렇습니다:
const users = await prisma.user.findMany()
for (const user of users) {
const count = await prisma.post.count({ where: { authorId: user.id } })
}이렇게 하면 유저 수만큼 쿼리가 나가서 느린데, Prisma에서 N+1 문제를 어떻게 해결하나요? include나 _count 같은 걸 쓰면 되나요?
댓글 2
Prisma에서 N+1 문제는 관계 필드의 _count를 사용하면 깔끔하게 해결됩니다.
이렇게 하면 Prisma가 내부적으로 JOIN 또는 서브쿼리로 한 번에 가져옵니다. 결과는
user._count.posts로 접근하면 됩니다.만약 더 복잡한 조건이 필요하면
include에where를 추가하거나,prisma.로 직접 SQL을 작성하는 것도 방법입니다.와 _count 이런 게 있었군요! 바로 적용했더니 쿼리가 1개로 줄었습니다. 감사합니다 관리자님!