我已经在保存的工作负载上运行了 Tuning Advisor。它的建议中有很多创建统计信息和一些创建索引。我知道索引会提高性能,但有人能解释一下收集统计信息如何提高性能吗?
答案1
从非常高的层次来看,统计信息被保存下来,以便 SQL Server 的查询优化器能够确定执行语句的最佳方式。执行计划是为每个操作生成的,而统计信息有助于确定要使用的最有效的执行计划来完成任务。
关于这个话题的信息非常多。不过,在实施调优建议之前,您应该绝对清楚它们的作用。例如,添加索引并不总是能提高性能。有时效果是负面的。不过,保持统计数据最新是至关重要的。
这是一篇 MSDN 文章,描述了查询优化器在 SQL 2008 中使用的统计数据。
Microsoft SQL Server 2008 中的查询优化器使用的统计信息
我还建议阅读这些专家的文章:
答案2
SQL 服务器Tuning Advisor 是专为 Microsoft SQL Server 系统设计的工具,它能够以多种不同的方式进行数据库调优。它既可用于在线调优,也可用于离线调优,具体取决于个人或企业的需求。它能够通过调优各种元素(如索引)来大大提高搜索的整体性能。它还可用于优化 SQL Server,方法是创建或删除分区和索引,并以一种旨在使运行速度尽可能快的方式修改这些类型的元素。
出于多种不同的原因,收集统计数据将对 SQL Server Tuning Advisor 的性能产生影响。这些统计数据本身是由与数据和值在表的列中或在索引视图中分布的方式有关的信息组成的对象。收集到必要的统计数据后,SQL Server Tuning Advisor 将使用该信息来估计特定查询结果中的行数。该估计称为“基数估计”,该信息允许应用程序创建高质量的查询计划。这样做将显示出比传统查询运行方式显著的性能改进。
使用 SQL Server Tuning Advisor 提高 SQL Server 的性能在概念上类似于通过允许索引来改进 Microsoft Windows 操作系统中的“搜索”功能。如果 SQL Server Tuning Advisor 能够使用统计数据来估计查询结果将会是什么样子,那么它将能够比没有统计数据时更快地生成这些结果。更快的查询结果将让位于更顺畅的整体工作环境