한 방 JOIN 쿼리를 개선해보자 (feat. 데이터 모델링 재설계)
구현하고자 한 API
@GetMapping("/{accommodationId}")
public ApiResponse<FindAccommodationResponse> getDetailAccommodation(
@PathVariable Long accommodationId,
@RequestParam(required = true) LocalDate checkIn,
@RequestParam(required = true) LocalDate checkOut,
@RequestParam(required = true) int capacity
) {
FindAccommodationResponse response = accommodationService.findAccommodation(accommodationId, checkIn, checkOut, capacity);
return ApiResponse.success(response);
}
JOIN 한 방 쿼리로 해결하기
쿼리 분석 (EXPLAIN ANALYZE)
도메인의 특성을 고려해서 테이블을 설계하자
임시 예약 (reservation_holds) 재설계
쿼리를 분리해보자
1. 숙소 정보 조회
2. 객실 정보 조회
3. 객실별 예약 현황 조회
4. 예약 가능 여부 매핑
쿼리를 분리해서 얻은 점
관점
이유
Last updated