【发布时间】:2012-01-27 15:18:58
【问题描述】:
如果我从非索引视图中选择,并且视图从索引表中选择,sql server 将使用索引还是我必须索引视图。
【问题讨论】:
-
可能但唯一知道的方法是查看执行计划
标签: sql sql-server reporting-services indexing ssrs-2008
如果我从非索引视图中选择,并且视图从索引表中选择,sql server 将使用索引还是我必须索引视图。
【问题讨论】:
标签: sql sql-server reporting-services indexing ssrs-2008
如果 SQL Server 决定有助于查询时间,它将使用索引。没有必要仅仅为了让您的表索引在视图中工作而创建 indexed 视图!
相反,索引视图允许您在派生(和非派生)数据上创建索引,这在某些情况下可以提供巨大的性能提升。
【讨论】:
是的,当您从简单视图(非持久性)中进行选择时,SQL Server 会使用视图的查询来创建计划。
所以如果你有这样的看法:
create view1 as
select ID, name from table1
你做到了:
select ID, name from view1
在内部,它与做的完全一样
select ID, name from table1
【讨论】:
如果我从非索引视图中选择,并且视图从索引视图中选择 表,
这是不可能的。
看,视图没有被索引一个普通的甚至不存在——它是一个在执行时被扩展的宏。所以最后你从索引表中查询。
除非您将视图具体化(完全不同的高级主题),否则视图仅靠捷径。
【讨论】:
如果我没记错的话,它将使用索引来创建视图,但针对视图的查询不使用索引。不过,在谈论视图索引时,有很多考虑因素。
查看此链接了解 sql server 索引视图的所有细节
http://msdn.microsoft.com/en-us/library/aa933148(v=sql.80).aspx
【讨论】: