본문 바로가기
Q&A해결2025년 3월 1일1분 읽기

Prisma에서 relation 쿼리할 때 N+1 문제가 발생하는데 해결 방법

스
스타트업개발
조회 1467댓글 2

Prisma로 게시글 목록을 가져올 때 각 게시글의 작성자 정보도 필요한데, 로그 보니까 쿼리가 글 수만큼 나갑니다.

const posts = await prisma.post.findMany()
for (const post of posts) {
  const author = await prisma.user.findUnique({ where: { id: post.authorId } })
}

댓글 2

김김영삼1년 전

전형적인 N+1 문제입니다. Prisma의 include를 사용하면 한 번의 쿼리로 해결됩니다:

// N+1 해결: include로 관계 데이터 함께 로드
const posts = await prisma.post.findMany({
include: {
author: {
select: { id: true, name: true, avatar: true }
}
}
})
// SQL: SELECT ... FROM posts LEFT JOIN users ON ...

또는 select로 필요한 필드만:

const posts = await prisma.post.findMany({
select: {
id: true, title: true,
author: { select: { name: true } }
}
})
스스타트업개발(guest)1년 전
코드까지 알려주셔서 바로 적용했어요. 감사합니다!
Ctrl+Enter로 등록