[英]MySQL UNION ALL performance tuning
SELECT `col1` FROM `tbl1`; -- takes 0.0022s
SELECT `col1` FROM `tbl2`; -- takes 0.0017s
SELECT `col1` FROM `tbl1`
UNION ALL
(SELECT `col1` FROM `tbl2`); -- takes 0.1100s
為什么UNION ALL
工作緩慢?
使用UNION ALL
任何其他選擇?
查詢緩存是否打開? 由於從 QC 獲得結果集,兩個單獨的SELECTs
可能人為地快速。
讓我們剖析UNION
以了解它的遲鈍:
SELECT
,將結果寫入該臨時文件。SELECT
,將結果寫入該臨時文件。UNION
上說ALL
后就沒有發生這種情況。)有兩件事可能使情況惡化:
UNIONs
可以避免臨時表。 也就是說,將來每個SELECT
的結果都可以直接傳遞給客戶端。 你顯然沒有這樣的版本。 至於括號,保留它們。 也將它們放在另一個SELECT
。 它不會影響性能,但可能會影響結果。 想象一下,例如, GROUP BY
在這三種情況下適用於什么:
-- Case 1
SELECT .. UNION SELECT .. GROUP BY ..
-- Case 2
SELECT .. UNION ( SELECT .. GROUP BY .. )
-- Case 3
( SELECT .. ) UNION ( SELECT .. ) GROUP BY ..
第一個與第二個相同,而不是第三個。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.