經過多次傳遞後,我想知道是否有可能進一步優化此查詢?任何見解都非常感謝。除了必須使用一堆不理想的子查詢之外,我必須使用其中一個兩次,因爲'標記'引用不能用在where子句中......(一直未能弄清楚如何重寫此爲連接,以解決)Mysql子查詢優化 - 如何減少/刪除子查詢
SELECT `t1`.*,
(SELECT GROUP_CONCAT(tag_id) FROM media_tag WHERE media_id=t1.id GROUP BY media_id) as tags,
(SELECT GROUP_CONCAT(award_id) FROM media_award WHERE media_id=t1.id GROUP BY media_id) as awards,
(SELECT GROUP_CONCAT(client_id) FROM media_client WHERE media_id=t1.id GROUP BY media_id) as clients,
(SELECT GROUP_CONCAT(collaborator_id) FROM media_collaborator t2 LEFT JOIN collaborator t3 ON t2.collaborator_id=t3.id WHERE media_id=t1.id AND t3.collaborator_type_id='1' GROUP BY media_id) as agencies,
(SELECT GROUP_CONCAT(collaborator_id) FROM media_collaborator t2 LEFT JOIN collaborator t3 ON t2.collaborator_id=t3.id WHERE media_id=t1.id AND t3.collaborator_type_id<>'1' GROUP BY media_id) as collaborators,
`t2`.`idx`, `t2`.`type`
FROM (`media` t1)
LEFT JOIN `sort` t2 ON `t1`.`id`=`t2`.`id` AND t2.type="media"
WHERE
FIND_IN_SET('1',(SELECT GROUP_CONCAT(tag_id) FROM media_tag WHERE media_id=t1.id GROUP BY media_id))
AND IF(t2.tag_id IS NOT NULL,t2.tag_id='1',1)
GROUP BY `t1`.`id`
ORDER BY `t1`.`date_mod` DESC, `title` ASC, `t2`.`idx` ASC, `date_mod` DESC, `title` ASC
我可能會把它扔掉。重新思考正在努力實現的目標。正如你還沒有告訴我們,將很難給出明智的答案 –
我有一個'媒體'記錄的主要集合。每個子查詢都拉入生活在不同表格中的索引屬性。屬性表具有(id,media_id,name)模式。我們的目標是查詢主要媒體文件,能夠將屬性聚合成逗號分隔的列表,然後abe能夠對任何一個屬性列表中的給定值進行過濾 – Funkmyer
我很好奇如果有更好的方法來設置這種數據格式的模式? – Funkmyer