DTA 建议创建统计信息

10 sql-server-2008 sql-server statistics tuning

我刚刚通过 DTA 运行了一个 T-SQL 查询,其中一项建议是在作为 SQL 代码文件中许多查询的一部分的列之一上创建统计信息。

我的问题是,统计数据究竟如何帮助提高性能?

Ale*_*x_L 7

在创建查询执行计划时使用统计信息。

用于查询优化的统计信息是包含有关值在表或索引视图的一列或多列中分布的统计信息的对象。查询优化器使用这些统计信息来估计查询结果中的基数或行数。这些基数估计使查询优化器能够创建高质量的查询计划。例如,查询优化器可以使用基数估计来选择索引查找运算符而不是资源密集型索引扫描运算符,从而提高查询性能。

有关更多详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms190397.aspx

  • @ Surfer513 - 小心:创建统计数据*可能*有不利影响。您提供给规划器的更好的信息可能会使其选择不同的执行路径,并且因为这是一个概率游戏,该路径可能会更慢(即使通常可能会更快)。换句话说,在生产数据库上,在实施之前进行测试。 (2认同)

Mar*_*ith 7

如果 DTA 推荐单列统计信息,您是否必须关闭自动创建统计信息?自动创建将自动在谓词中使用的任何列上构建统计信息,因此通常将其保持打开状态是个好主意。检查此数据库的自动更新状态,通常应该再次打开。

DTA 的最佳用途之一是识别丢失的多列统计信息,自动创建不会生成这些统计信息。但是对于单列,自动创建应该为您处理它们。