Fetch join와 Batch size를 이용한 N+1 문제 해결
문제상황 배달 서비스의 서버를 개발하며, N+1 문제가 발생했습니다. 아래와 같이 테이블을 설계했는데, 주문 상세 내역을 조회할 때 유저, 주소, 가게, 메뉴, 세부 메뉴(ex. 짜장면), 메뉴의 옵션 그룹(ex. 추가메뉴), 옵션 그룹의 옵션(ex. 콜라, 단무지)가 함께 조회되는 구조입니다. 위와 같은 구조에서 3개의 메뉴와 각 메뉴마다 3개의 옵션그룹 그리고 각 옵션그룹마다 3개의 옵션있는 주문을 조회하면, 아래와 같이 총 번의 조회가 발생합니다. 총 18번 = Order(1번) + CanceledOrder(1번) + Store(1번) + User(1번) + Address(1번) + OrderMenu(1번) + OrderGroup(3번) + OrderOption(9번) 참고로 주문에서 실제 음식 정..
2023. 6. 2.