相关的查询优化功能

下列 SQL Server 查询优化功能可与缺失索引功能一起使用:

  • sys.dm_db_index_usage_statssys.dm_exec_query_stats 动态管理视图

  • 数据库引擎优化顾问

sys.dm_db_index_usage_stats 收集有关 SQL Server 实例上现有索引的索引使用信息。sys.dm_exec_query_stats 返回有关缓存查询计划的聚合性能统计信息。它可捕获诸如缓存计划已执行的时间、缓存计划进行时所执行的逻辑和物理读取操作数等信息。

数据库引擎优化顾问是一个独立的工具,可对整个 SQL Server 工作负荷进行分析,并针对物理设计结构(例如索引、索引视图或分区)的配置生成建议。

下面将对数据库引擎优化顾问与缺失索引功能进行详细比较。

缺失索引功能与数据库引擎优化顾问

缺失索引是轻型的且始终启用的服务器端功能,用于捕获并更正索引错误。相反,数据库引擎优化顾问是一个综合工具,可用于评估物理数据库设计,并建议新的物理设计结构以改善性能。数据库引擎优化顾问不仅考虑索引,还考虑应使用索引视图还是使用分区来提高查询性能。

下表对缺失索引功能和数据库引擎优化顾问进行更详细的比较:

比较点

缺失索引功能

数据库引擎优化顾问

如何部署?

服务器端

客户端、独立应用程序。

可用性?

始终启用

由数据库管理员启动或在脚本中调用。

分析范围?

快速即席分析,仅提供有关缺失索引的有限信息。

彻底的工作负荷分析,提供已提交工作负荷环境下最佳物理数据库设计配置的完整建议报告。

分析中将 UPDATE、INSERT 和 DELETE 语句作为考虑因素吗?

分析中将可用磁盘存储空间作为考虑因素吗?

列是按照建议的索引排列吗?

否,必须手动排序 CREATE INDEX 语句中的列。

基于查询执行开销,按照建议的索引自动确定列的顺序。

建议使用聚集索引吗?

建议使用涵盖索引吗?

建议使用非涵盖索引吗?

建议使用索引视图吗?

建议使用分区吗?

建议的依据是什么?

由查询优化器估计查询执行的大致开销。

由查询优化器估计查询执行开销。

实现这些建议会产生什么影响?

报告添加缺失索引所产生的大致影响。有关详细信息,请参阅 sys.dm_db_missing_index_group_stats

生成十五个不同的分析报表,提供有关实现这些建议所产生的影响的信息。有关详细信息,请参阅选择数据库引擎优化顾问报告

如果实现了已标识的缺失索引,则查询性能可能会得到改善。可使用数据库引擎优化顾问用户指定的配置功能和评估模式,来确定实现缺失索引对整个工作负荷的影响。有关详细信息,请参阅使用数据库引擎优化顾问进行探索性分析

即使对于单个查询工作负荷,数据库引擎优化顾问和缺失索引功能也可返回不同的建议。这是因为缺失索引功能建议的索引键列不区分先后顺序。另一方面,数据库引擎优化顾问建议包括对索引键列进行排序,以优化查询性能。

总结

缺失索引功能可用于捕获并更正索引错误,而数据库引擎优化顾问可用于更正索引错误,并从整体上优化服务器中运行的工作负荷。可使用缺失索引功能生成候选索引,但应使用数据库引擎优化顾问对这些索引进行验证。