Sql server 索引视图

Posted

技术标签:

【中文标题】Sql server 索引视图【英文标题】:Sql server indexed view 【发布时间】:2011-02-16 20:51:46 【问题描述】:

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

我有一个名为

的索引视图

任务详情

当我查看执行计划时

select * from AssignmentDetail

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

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

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

任何见解将不胜感激

【问题讨论】:

【参考方案1】:

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

select * 
from AssignmentDetail WITH (NOEXPAND)

【讨论】:

【参考方案2】:

索引视图的重点不是加速

SELECT * FROM MyView

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

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

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

【讨论】:

重新“选择 * 不是重点”——怎么回事?当底层视图包含 22 个连接、16 个过滤器并且马戏团小马没有加速索引视图的点的实现一个 @EBarr 取决于,小马是什么颜色的? @RedFilter - 白色和灰色,带有橙色鬃毛;毕竟这是 ***。

以上是关于Sql server 索引视图的主要内容,如果未能解决你的问题,请参考以下文章

Sql server 索引视图

SQL Server——索引视图和SQL编程

SQL Server索引视图以(物化视图)及索引视图与查询重写

SQL Server 索引和视图

索引视图的 SQL Server 事务复制

索引视图中的 SQL Server ISDATE