我们可以使用视图来改善查询的性能吗?
答案 0 :(得分:5)
如果设计得当,索引视图将提高查询性能。
http://technet.microsoft.com/en-us/library/cc917715.aspx
编辑:请注意,除非您使用的是Enterprise Edition或Developer Edition,否则您需要指定WITH(NOEXPAND)提示以在您的选择中获得性能提升。
答案 1 :(得分:4)
非物化视图可以从查询计划缓存中受益,并且取决于设置可以支持谓词推送。谓词推送是优化器确定视图上的WHERE子句的地方:
SELECT v.*
FROM VIEW v
WHERE v.column = 5
...可以推送到用于构造视图的查询中:
SELECT *
FROM VIEW_TABLE(S)
WHERE column = 5
否则,非物化视图可以被视为宏 - 占位符,可以扩展到基础查询。这意味着,根据使用情况,视图的执行情况可能比将基础查询合并到外部查询中更糟糕。将视图叠加在一起并不是明智的做法,因为在运行时(使用视图的查询)之前不会遇到错误。
物化视图(在SQL Server中称为索引视图)上至少有一个索引,并且可以像查询普通表一样快。
答案 2 :(得分:0)
我不这么认为。这完全取决于查询中使用的表的索引。我认为在任何数据库上使用视图都没有任何“性能”提升。唯一的好处是他们为你做了加入工作。
答案 3 :(得分:-1)
您至少应该看到视图的较小性能增益,因为它们基本上会告诉数据库引擎该表是相关的。
if 您已启用索引并为表格正确配置。
否则,少量的性能提升只来自数据库引擎已经知道它需要运行该基本语句。