我有一個關於一個小問題MySQL的MySQL的選擇從UNION性能問題(殺死數據庫)
我試圖讓兩個表的UNION像這樣:
SELECT `user_id`, `post_id`, `requested_on`
FROM `a`
WHERE `status` != 'cancelled'
UNION
SELECT `user_id`, `post_id`, `time` as requested_on
FROM `b`
WHERE `type` = 'ADD'
此查詢在執行Showing rows 0 - 29 (36684 total, Query took 0.0147 sec)
但是當我做
SELECT * FROM (
SELECT `user_id`, `post_id`, `requested_on`
FROM `a`
WHERE `status` != 'cancelled'
UNION
SELECT `user_id`, `post_id`, `time` as requested_on
FROM `b`
WHERE `type` = 'ADD'
) tbl1
MySQL的死亡。
爲什麼我想這樣做的原因是爲了GROUP BY user_id, post_id
任何想法,爲什麼發生這種情況/任何變通辦法?
後來編輯:
這是SQL小提琴:
http://sqlfiddle.com/#!2/c7f82d/2
最後的查詢是存在的,其執行:
Record Count: 10; Execution Time: 574ms
574ms的10條記錄在我看來是巨大的。
你可以提供一個sqlfiddle嗎?你想在你的最終結果中使用哪個'requested_on'? – Strawberry
請顯示你想要做的最後一個查詢,以及表上有什麼索引? –
你死了,你意思是說你的查詢需要很長時間才能執行/使用大量的IO/CPU?另外,顯示行0-29(總計36684 ...意味着最初的查詢返回一個小子集,而第二個派生表需要整體評估爲「GROUP」 – StuartLC