SQL表统计,如何确定要更新的统计信息?

时间:2011-06-17 22:00:25

标签: sql-server-2008

我有几张桌子每天增加100k的行数。一些统计数据得到更新,但不是全部。似乎列出了50多个统计数据。 1/2几天前更新了一些,而不是3个月前。我应该更新这些吗?他们为什么不更新?

1 个答案:

答案 0 :(得分:0)

只要所有自动创建/自动更新都打开...那么SQL优化器不会更新统计信息的原因很可能是因为它认为生成最佳查询计划是不必要的。

这反过来可能是因为你的表的标准用法通常不会在查询中使用它们(即where子句,比较,连接等)。

您可以手动更新统计信息,但如果SQL没有使它们保持最新状态,那么在正常的活动过程中,您可能会发现没有任何改进。 (只要启用了自动更新)

翻转...如果您突然开始在历史上不经常使用的列上运行查询,那么优化器可能会改变它的想法并开始密切关注它。

返回自动更新...如果它已关闭,那么您就处于自己的领域。此外,如果有人进入并手动创建了一堆统计信息,那么SQL也不会更新这些统计信息,除非它们在优化查询时变得有用。

This Books Online article is an excellent source of information.