SQL Server索引视图
-
04-10-2019 - |
题
好的,我对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上具有一个实际上可能存在于不同表上的索引。
不隶属于 StackOverflow