SQL Server中的视图

时间:2011-04-30 04:22:40

标签: sql sql-server views sql-server-2008-r2

我们可以使用视图来改善查询的性能吗?

4 个答案:

答案 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 您已启用索引并为表格正确配置。

否则,少量的性能提升只来自数据库引擎已经知道它需要运行该基本语句。