最適化している MySQL クエリがあり、現在、2 つの依存/相関サブクエリがあります。
これらを回避するために書き直すことが可能かどうか疑問に思っていましたか?
SELECT *
FROM `pp_slides`
JOIN `pp_slide_content`
ON `pp_slides`.`id` = `pp_slide_content`.`slide_id`
AND `pp_slide_content`.`version` = (
SELECT max(`version`) FROM `pp_slide_content` WHERE `slide_id` = `pp_slides`.`id`
)
LEFT JOIN `pp_published_slides`
ON `pp_published_slides`.`slide_id` = `pp_slides`.`id`
AND `pp_published_slides`.`slide_version` = `pp_slide_content`.`version`
AND `pp_published_slides`.`publish_id` = (
SELECT max(`publish_id`) FROM `pp_published_slides` WHERE `pp_published_slides`.`slide_id` = `pp_slides`.`id` AND `pp_published_slides`.`slide_version` = `pp_slide_content`.`version`
)
LEFT JOIN `pp_publish` ON `pp_publish`.`id` = `publish_id`
WHERE `pp_slides`.`product_id` = '2'
AND `pp_slides`.`country_code` = 'gb'
簡単な概要: スライドが作成され、バージョン化された変更がサポートされます。その後、スライド (およびその他のエンティティ) が発行されます。発行されるスライドとバージョンは、pp_published_slides テーブルに設定されます。パブリッシュ オブジェクト全体は pp_publish に保存されます。
上記の SQL は、スライド オブジェクトを読み込み、最新バージョン、公開時期などに関する追加データを含めます。
これがsqlfiddle http://sqlfiddle.com/#!2/902fb4/1です
私のSQL知識の限界で、どんな助けも大歓迎です....