• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

13:50쯤부터 EAGER로 변경하고 나서 N+1 동작 질문있습니다

23.08.16 00:29 작성 조회수 308

0

fetchtype을 LAZY로 설정했을 경우 N+1문제는 이해했습니다.

 

그런데 EAGER의 경우 Order를 위한 1개의 select쿼리 뒤에 delivery를 위한 1개의 쿼리와 3중 조인문 2개의 쿼리가 나가고 있는데 (위 사진)

 

  1. join문이 EAGER처리를 위한 쿼리라면 왜 order 조회쿼리 뒤에 바로 나가지 않고 delivery 조회쿼리가 한번 나간 뒤에 나가는건지

     

  2. 왜 delivery에 대한 추가 쿼리는 나가는데 member는 조회쿼리가 나가지 않고 join문이 나가는지

     

  3. EAGER의 경우에도 모든 연관객체가 영속성 콘텍스트 안에 존재하지 않는다면 정확히 1+N개의 쿼리가 나가는지 (=LAZY와 똑같이 1+N개의 쿼리가 나가는지)

 

이 세가지가 이해되지 않습니다.

EAGER일때 쿼리를 이해해보려고 노력했는데 "LAZY와는 추가쿼리(N)가 나가는 시점의 차이가 있다" 정도 말고는 이해가 되지 않아 질문드립니다.

답변 1

답변을 작성해보세요.

1

김영빈님의 프로필

김영빈

질문자

2023.08.16

궁금하기는 한데 https://www.inflearn.com/questions/710275 이거보고 그냥 넘어가기로 했습니다