MySQL VIEW与嵌入式查询,哪一个更快?

时间:2010-06-15 08:15:59

标签: sql mysql view materialized-views

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

SELECT id FROM (SELECT * FROM t);

我想将其转换为:

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

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

4 个答案:

答案 0 :(得分:2)

SQL Server中的索引视图通常称为“物化视图”,MySQL不支持。与其他供应商相比,MySQL的VIEW支持相当有限 - restrictions are listed in their documentation

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

大致相同。是快还是不快取决于你的索引。

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

答案 3 :(得分:0)

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

视图的行为略有不同,请参阅Create View