3

我将使用视图优化 MySQL 嵌入式查询,但我不确定它是否会产生效果:

SELECT id FROM (SELECT * FROM t);

我想将其转换为:

CREATE VIEW v AS SELECT * FROM t; 
SELECT id FROM v;

我听说过 SQL Server 中的“索引视图”,但我不确定 MySQL。任何帮助,将不胜感激。谢谢!

4

4 回答 4

2

SQL Server 中的索引视图通常称为“物化视图”,MySQL 不支持。与其他供应商相比,MySQL 的 VIEW 支持相当有限——这些限制在他们的文档中列出

普通视图只是一个准备好的 SQL 语句 - 使用您提供的两个示例没有区别。在某些情况下,从视图中选择时的 WHERE 子句可以被优化器推送到 VIEW 查询中,但它完全不受您的控制。

于 2010-06-15T16:20:32.560 回答
0

视图可能更快(可能是),但你为什么不直接测试它呢?或者对这两个查询运行 EXPLAIN 以查看它们将如何执行?

于 2010-06-15T08:18:45.430 回答
0

差不多。它会快还是不快,这取决于您的索引。

MySQL 缓存查询结果,因此只要您的查询在执行之间是相同的,并且只要底层数据集相同(没有添加新记录),它将在下一次查询执行时返回缓存的结果。

于 2010-06-15T08:18:47.790 回答
0

每次获取视图时都会运行 select 语句。

视图的行为略有不同,请参阅创建视图

于 2010-06-15T08:20:23.727 回答