是否有理由手动更新统计信息?


19

在SQL Server中,统计时自动更新Auto Update StatisticsTrue(这是默认值)。是否有理由在什么情况下手动更新统计信息?

Answers:


21

当然,如果您的数据更改的频率比自动统计信息的更改频率高(或者说,您正在频繁更新少于20%的行,例如更新状态或日期/时间戳)。或者,如果您的表很大,并且表的变化不足以触发自动统计信息更新。或者,如果您已过滤索引(由于自动统计信息阈值仍然基于整个表的变化百分比,而不是基于过滤索引中的行子集的变化百分比)。


+1用于过滤索引。我认为这是主要原因,或者在非常大的数据集上。我有一些表,每个月要插入3000万行,但这只是一个很小的百分比,因此除非手动启动,否则通常不会更新统计信息。
JNK 2012年

+1另外,您可以按计划执行以重置计数器,这意味着在维护时段之外的机会更少。
gbn 2012年

7

还有更多(表面的)原因:

自动更新统计信息将阻止触发更新的查询,直到新统计信息准备就绪为止。

...除非您还异步启用自动更新统计信息。然后,触发更新的查询将不等待新的统计信息,但可能会与旧的不正确的统计信息一起运行。

当带有一些相对较大的表(44M行,8.5 GB)的数据库开始更新统计信息时,我还遇到了一些奇怪的阻塞问题。但是,在我能够真正跟踪正在发生的事情之前,我们已经停用了该应用程序。


1
+1这是关于阻止和异步选项的重点。
亚伦·伯特兰

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.