关于视图和索引 (SQL Server 2008 R2)

Posted

技术标签:

【中文标题】关于视图和索引 (SQL Server 2008 R2)【英文标题】:On Views and Indexes (SQL Server 2008 R2) 【发布时间】:2012-02-16 14:41:36 【问题描述】:

我创建了一系列在一个相当大的表上运行的视图。该表已正确索引,性能完全足够。我想向数据库添加一个额外的视图层,它们是视图的有效视图。我想知道的是 SQL Server 是否足够聪明,可以在构建查询时使用基础表上的索引,或者我是否需要以某种方式索引第一层视图?

【问题讨论】:

这可以通过执行计划显示轻松检查 实际数据将从物理上包含数据的表或视图中获取。因此 Sql server 引擎除了使用所有可用的加速器,即 indeces 之外,无事可做。 【参考方案1】:

是的。视图(未持久化)只不过是存储在数据库中的查询。如果您有一个名为 view1 的视图作为 select * from table1 并执行 select * from view1,SQL Server 会自动将其转换为 select * from table1 然后构建执行计划

如果您增加对象链以添加更多视图,则适用相同规则。

【讨论】:

以上是关于关于视图和索引 (SQL Server 2008 R2)的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 R2 和索引视图中的执行计划

Sql Server 2008 中缺少全文索引系统视图

了解 SQL Server 2008 R2 中索引视图中的列类型

在 Sql Server 2008 中索引视图是不是实际上复制了原始数据?

在 SQL Server 2008 中将两个表合并到一个索引视图中

SQL Server 索引最佳实践(SQL Server 2008)[关闭]