在表或视图上设置索引?

Posted

技术标签:

【中文标题】在表或视图上设置索引?【英文标题】:Set index on a table or a view? 【发布时间】:2013-12-11 13:59:25 【问题描述】:

我正在 SQL Man 中测试几个存储过程。 studio 和我收到了一些关于在何处以及如何在相关表上添加索引的建议。

我的困境是 - 向原始表添加额外的索引更好,还是更好的方法是从该表创建一个视图并在新生成的视图上设置索引?我目前正在原始表上设置索引,希望这是正确的做法。

【问题讨论】:

【参考方案1】:

最好在原桌子上做。

即使在 Enterprise Edition 上,视图上的索引也比直接在基表上匹配和使用的可能性要小得多。

当想要具体化更复杂的数据子集(例如,预先计算的聚合查询)时,索引视图通常更有用。

【讨论】:

可以在原始表上添加多个索引(取决于 sp 需要)会对执行速度产生负面影响。还是只是根据 sp 需求尝试和优化索引?【参考方案2】:

是的,如果我在表上遇到性能问题,我发现 SQL Server DMV 关于向表中添加哪些索引的建议非常有用,并且确实加快了表上的 CRUD 性能问题。

请注意,在向表中添加建议的索引后,测试性能是提高还是变差很重要。

观点的优缺点有据可查here

【讨论】:

以上是关于在表或视图上设置索引?的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server和Oracle数据库索引介绍

查看 - 索引 SQL 服务器

SqlServer 索引和视图

SQL Server索引

在 SQL 中的表或视图上添加索引

SQL Server 索引和视图