3
我有一個包含UNION ALL的視圖。例如:包含UNION的MySQL視圖不能優化,換句話說,SLOW!
CRATE VIEW myView as
(SELECT col1, col2, col3
FROM tab1)
UNION ALL
(SELECT col1, col2, col3
FROM tab2)
這些是大型表,每個表中包含數百萬行。如果我寫:
SELECT *
FROM myView
LIMIT 1;
而不是立即,它基本上永遠不會返回其他查詢寫入此視圖。如果我在針對單個基礎表的查詢中使用LIMIT,則它是立即的。我有基礎表上的索引。看起來MySQL在應用任何過濾標準之前爲視圖創建了整個聚合數據集(視圖內的查詢)。瘋了吧。這是MySQL優化查詢查詢的方式嗎?順便說一句,我甚至無法針對視圖運行解釋計劃,因爲它永遠不會返回。