Mysql
如果物化視圖在 MySQL 中不存在,為什麼在 MySQL 解釋語句中將某些視圖列為物化視圖?
希望這個問題是不言自明的。我讀過 MySQL 中不存在物化視圖,但有時我會在
EXPLAIN
有人可以幫我解決這個問題嗎?如果物化視圖在 MySQL 中不存在,那麼“(物化)”是什麼意思?使用 MySQL 伺服器 5.6、工作台 6.3。
對於外部世界(如果我沒記錯的話),“物化視圖”是一個永久表,它會根據流入其他表的數據自動插入/更新。
在 MySQL 中,它的含義相當有限。它指的是某些“派生”表(例如,
FROM ( SELECT ... )
)。優化器有多種方法來處理此類構造。
- 在 5.6 之前,對於單個這樣的構造,優化器將簡單地將其用作第一個“表”,而不必“實現”任何東西。
- 在 5.6 之前,對於多個派生表(對於
FROM (SELECT...) JOIN (SELECT...)
),優化器將不得不重複地重新執行除第一個派生表之外的所有表。- 5.6 引入了自動為其中一個派生表創建臨時表的能力。此外,優化器變得足夠聰明,可以發現這個臨時表的最佳索引並創建它。(附註:對整個查詢進行適當的重寫通常可以執行得更好。)
作為程序員,您基本上無法控制這個版本的“物化視圖”。(好吧,重寫以避免需要。)
5.7 和 8.0 有更多的性能改進。但仍然沒有外界所知的“物化視圖”。