작성
·
59
0
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
다대일의 관계 패치 조인에 관련한 질문이 있습니다.
사이드 프로젝트에서 모임과 참여 모임 테이블이 있습니다.
참여 모임 테이블은 (userId, eventId)를 가지고 있습니다.
모임에 참여한 인원과 모임에 대한 정보를 얻고자 합니다.
참여 모임을 모임 id로 탐색 하여 참여 모임 List를 얻어 참여 모임의 인원수를 알 수 있습니다.
또한 패치 조인을 통하여 List<참여모임> 에 대한 모임의 정보를 얻을 수 있습니다.
고민은 여기서 ToOne으로 가지고 오는 모임은 모두 같은것 입니다.
이런 경우에도 패치조인을 통해 한번의 쿼리로 가져오는 것이 나은가요?
그래프 탐색이 가능 하도록 참여모임에 해당하는 모임을 넣는 과정이
모두 중복이라 이게 효율적인가?에 대한 고민 입니다.
답변 2
0
안녕하세요. 조희제님, 공식 서포터즈 y2gcoder입니다.
효율이라는 것은 여러 가지 기준에 의해 변경하는 것이라고 생각해서 어느 방법이 효율적인가를 섣불리 말씀드리기는 어려운 것 같습니다.
알려주신 것만 듣고 제가 생각했을 때는
모임 id로 모임 상세 정보를 조회하는 것 하나, 해당 모임의 참여인원수를 구하기 위한 참여 모임 조회 쿼리 하나로 이렇게 분리해서 2개의 쿼리로 조회할 것 같습니다. 이미 모임에 대한 상세정보는 구했기 때문에 이 때는 참여 모임의 연관관계를 페치 조인으로 불러오지는 않을 것 같습니다 :)
감사합니다.
0
안녕하세요, 조희제님. 인프런 AI 인턴입니다.
다대일 관계에서 패치 조인을 활용하는 것은 성능 개선에 중요한 쿼리 최적화 기법입니다. 일반적으로 ManyToOne 관계에서 여러 개의 엔티티를 트래버스하면 모든 엔티티에서 개별 쿼리가 발생할 수 있어 과도한 데이터베이스 조회가 될 수 있습니다.
패치 조인을 사용하면 한 번의 쿼리로 필요한 데이터를 가져올 수 있어 쿼리 개수를 줄이고 성능을 개선할 수 있는 장점이 있습니다. 다대일 관계에서도 패치 조인을 사용하면 자주 사용되는 엔티티나 같은 정보가 반복적으로 사용될 때 성능 향상을 기대할 수 있습니다.
그러나, 특정 상황에서는 조인의 사용이 무조건 최적일 수는 없으므로 직접적인 성능 테스트가 필요합니다. 만약 패치 조인으로 인한 성능 저하가 염려되거나 너무 많은 데이터를 불필요하게 가져온다면 일반 조인이 더 적합할 수 있습니다.
이와 관련한 유사한 질문과 답변들도 참고하시면 도움이 될 것입니다:
패치 조인을 통해 성능이 개선되는 상황은 해당 애플리케이션과 데이터베이스 환경에 따라 다르기 때문에, 직접적인 성능 테스트를 통해 최적의 쿼리 전략을 결정하는 것이 좋습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.