数据库调优顾问建议我在我的数据库中创建一堆统计信息。我是一个SQL n00b,所以这是我第一次遇到这样的生物。 MSDN中的条目有点迟钝 - 有人可以解释这究竟是什么,以及为什么这是一个好主意?

有帮助吗?

解决方案

基于成本的查询优化是一种使用直方图和行数来启发式估算成本的技术执行查询计划。当您向SQL Server提交查询时,它会对其进行评估并生成一系列查询计划,它使用启发式方法来估算成本。然后它选择最便宜的查询计划。

查询优化器使用统计信息来计算查询计划的成本。如果统计数据丢失或过期,则没有正确的数据来估算计划。在这种情况下,它可以生成适度或高度次优的查询计划。

SQL Server将(在大多数情况下)自动生成大多数表和索引的统计信息,但您可以补充这些或强制刷新。查询调优向导可能在查询中发现了一些缺少的统计信息或已识别的联接,应该添加统计信息。

其他提示

优化程序使用统计信息来确定是否为查询使用特定索引。如果没有统计信息,优化器就无法知道有多少行与给定条件匹配,导致它必须针对“多行”进行优化。案例,可能不是最优的。

简而言之,它使您的数据库有效地工作。通过准备好统计数据,您的数据库知道(在需要确定执行计划之前)可能是最有效的路由。

基本上只是让SQL更新你有什么类型的索引,行数等。这有助于SQL更好地估计如何执行查询。保持统计更新是一件好事。

来自BOL ......

  

创建直方图并关联   密度组(集合)   提供的一列或一组列   表或索引视图。字符串摘要   还会创建统计信息   在char,varchar上构建的统计信息   varchar(max),nchar,nvarchar,   nvarchar(max),text和ntext   列。查询优化器使用它   统计信息选择   最有效的检索计划或   更新数据。最新统计数据   允许优化器准确   评估不同查询的成本   计划,并选择一个高质量的计划。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top