본문 바로가기
Q&A해결2026년 4월 9일1분 읽기

Prisma에서 N+1 쿼리 문제 해결 방법

주
주니어개발자소연
조회 404댓글 2

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

김김영삼6개월 전

Prisma에서 N+1 문제는 관계 필드의 _count를 사용하면 깔끔하게 해결됩니다.

const users = await prisma.user.findMany({
include: {
_count: {
select: { posts: true }
}
}
})

이렇게 하면 Prisma가 내부적으로 JOIN 또는 서브쿼리로 한 번에 가져옵니다. 결과는 user._count.posts로 접근하면 됩니다.

만약 더 복잡한 조건이 필요하면 include에 where를 추가하거나, prisma.로 직접 SQL을 작성하는 것도 방법입니다.

주주니어개발자소연6개월 전

와 _count 이런 게 있었군요! 바로 적용했더니 쿼리가 1개로 줄었습니다. 감사합니다 관리자님!

Ctrl+Enter로 등록