4

好的,我对 sql server 索引视图感到困惑(使用 2008)

我有一个名为的索引视图

作业详情

当我查看执行计划时

select * from AssignmentDetail

它显示了索引视图应该抽象掉的所有其他表的所有底层索引的执行计划。

我认为执行计划将只是 PK_AssignmentDetail 的聚集索引扫描(我认为的聚集索引的名称),但事实并非如此。

这个索引视图似乎没有性能提升我应该做什么?我是否还应该使用所有列创建一个非聚集索引,这样它就不必命中所有其他索引?

任何见解将不胜感激

4

2 回答 2

5

SQL Server 企业版足够智能,可以在索引视图存在时查找和使用它们。但是,如果您没有运行企业版,则需要明确告诉它使用索引视图,如下所示:

select * 
from AssignmentDetail WITH (NOEXPAND)
于 2010-05-07T14:22:43.537 回答
2

索引视图的重点不是加快速度

SELECT * FROM MyView

它将帮助您提高性能的是视图本身列上的索引,例如。

SELECT * FROM MyView WHERE ViewColumnA = 'A' and ViewColumnB = 'B'

因此,您可以在 ViewColumnA 和 ViewColumnB 上有一个索引,该索引实际上可能存在于不同的表中。

于 2010-05-07T14:24:07.850 回答