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

我有一个索引的视图

分配尾

当我查看执行计划时

select * from AssignmentDetail

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

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

这种索引视图似乎没有表现收益,我该怎么办?我还应该使用所有列创建一个非群集索引,以便它不必击中所有其他索引?

任何洞察力都将不胜感激

有帮助吗?

解决方案

SQL Server的企业版足够聪明,可以在存在时寻找并使用索引视图。但是,如果您不运行企业版,则需要明确告诉它使用索引视图,例如:

select * 
from AssignmentDetail WITH (NOEXPAND)

其他提示

索引视图的点不是加快

SELECT * FROM MyView

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

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

因此,您可以在ViewColumna和ViewColumnb上具有一个实际上可能存在于不同表上的索引。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top