好的,我对sql server索引视图感到困惑(使用2008)
我有一个名为
的索引视图AssignmentDetail
当我查看
的执行计划时select * from AssignmentDetail
它显示了索引视图应该抽象出去的所有其他表的所有底层索引的执行计划。
我认为执行计划只是对PK_AssignmentDetail(我视图的聚集索引的名称)的聚集索引扫描,但它没有。
这个索引视图似乎没有性能提升我应该做什么?我是否还应该为所有列创建一个非聚集索引,以便它不必命中所有其他索引?
非常感谢任何见解
答案 0 :(得分:5)
SQL Server企业版非常智能,可以查找并使用索引视图。但是,如果您没有运行企业版,则需要明确告诉它使用索引视图,如下所示:
select *
from AssignmentDetail WITH (NOEXPAND)
答案 1 :(得分:2)
索引视图的要点不是加速
SELECT * FROM MyView
它可以帮助您提高性能是视图本身的一个索引,例如。
SELECT * FROM MyView WHERE ViewColumnA = 'A' and ViewColumnB = 'B'
因此,您可以在ViewColumnA和ViewColumnB上拥有一个索引,该索引实际上可以存在于不同的表中。