Mysql

如果物化視圖在 MySQL 中不存在,為什麼在 MySQL 解釋語句中將某些視圖列為物化視圖?

  • January 9, 2019

希望這個問題是不言自明的。我讀過 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 有更多的性能改進。但仍然沒有外界所知的“物化視圖”。

引用自:https://dba.stackexchange.com/questions/226699