너무 복잡하다? 나는 이것이 훨씬 더 잘 쓰여질 수있다, 나는 당신이 더 많은 쿼리를 사용하여 '레코드 세트를 통해 반복 할 수있다'는 말을 들었다 - 이것이 좋은 일이 될 것인가? 그렇다면 누군가 나를 올바른 방향으로 향하게 할 수 있습니까? 이 쿼리는 3 개의 테이블이있는 하위 쿼리를 포함하여 8 개의 테이블에 분산되어 있으므로 많은 메모리를 사용해야합니다.MySQL의 쿼리 내가이 만든 쿼리를 가지고 있지만이 문제를 가지고
주 - 읽기 전용 액세스 권한이있는 슬레이브 데이터베이스를 사용하므로 구조 변경/테이블 생성 등이 불가능합니다!
도움을 주셔서 감사합니다. 대단히 감사합니다.
Select travel_booking.reference As REF,
travel_group.name As `Group Name`,
site_user.firstname As `First Name`,
site_user.lastname As `Last Name`,
site_user.gender,
travel_package.start_date As `Start Date`,
travel_booking_option.name As `Option Name`,
travel_booking_option.text_box_text As `Free Text`,
travel_booking_option.select_box_option As `Select Text`,
travel_booking_option.option_price As `Option Price`,
content.name As `Option Type`
From travel_booking Inner Join
travel_booking_option On travel_booking_option.travel_bookingid =
travel_booking.travel_bookingid Inner Join
travel_group On travel_group.travel_groupid = travel_booking.travel_groupid
Inner Join
site_user On site_user.site_userid = travel_booking.site_userid Inner Join
travel_option_group On travel_option_group.travel_option_groupid =
travel_booking_option.travel_option_groupid Inner Join
content On travel_option_group.travel_option_type_content_realid =
content.content_realid Inner Join
travel_package On travel_package.content_realid =
travel_booking.travel_packageid
Where travel_booking_option.fee = 0 And travel_booking_option.refund = 0 And
travel_booking_option.cancel = 0 And travel_booking.cancel = 0 And
travel_package.live = 1 And content.live = 1
Group By travel_booking.reference,
travel_group.name,
site_user.firstname,
site_user.lastname,
site_user.gender,
travel_package.start_date,
travel_booking_option.name,
travel_booking_option.text_box_text,
travel_booking_option.select_box_option,
travel_booking_option.option_price,
content.name
외에도 꽤 좋은 보인다. 인덱스를 조정하여 가능한 한 효율적인지 확인하는 것이 좋습니다. – ChaosPandion
쿼리가 깨끗하고 직관적으로 보입니다 – Xinus