如果 MySQL 中不存在物化视图,为什么某些视图在 MySQL 解释语句中列为物化?

bjk*_*116 3 mysql materialized-view mysql-5.6

希望这个问题是不言自明的。我读过 MySQL 中不存在物化视图,但有时我会在EXPLAIN

声明

有人可以帮我解决这个问题吗?如果物化视图在 MySQL 中不存在,“(物化)”是什么意思?使用 MySQL Server 5.6、Workbench 6.3。

Ric*_*mes 5

对于外界(如果我没记错的话),“物化视图”是一个永久表,它根据流入其他表的数据自动插入/更新。

在 MySQL 中,它的含义相当有限。它指的是某些“派生”表(例如,FROM ( SELECT ... ))。优化器有多种方法来处理此类构造。

  • 在 5.6 之前,对于单个这样的构造,优化器将简单地将其用作第一个“表”而无需“具体化”任何内容。
  • 在 5.6 之前,对于多个派生表 (for FROM (SELECT...) JOIN (SELECT...)),优化器必须重复执行除第一个派生表之外的所有表。
  • 5.6 引入了为派生表之一创建临时表的自动功能。此外,优化器变得足够聪明,可以发现这个临时表的最佳索引并创建它。(旁注:对整个查询进行适当的重写通常可以更好地执行。)

程序员基本上没有什么可以控制这个版本的“物化视图”。(好吧,重写以避免需要。)

5.7 和 8.0 有更多的性能改进。但仍然没有外界所知的“物化视图”。