19 在SQL Server中,统计时自动更新Auto Update Statistics的True(这是默认值)。是否有理由在什么情况下手动更新统计信息? sql-server index statistics maintenance — 杰拉拉 source
21 当然,如果您的数据更改的频率比自动统计信息的更改频率高(或者说,您正在频繁更新少于20%的行,例如更新状态或日期/时间戳)。或者,如果您的表很大,并且表的变化不足以触发自动统计信息更新。或者,如果您已过滤索引(由于自动统计信息阈值仍然基于整个表的变化百分比,而不是基于过滤索引中的行子集的变化百分比)。 — 亚伦·伯特兰 source +1用于过滤索引。我认为这是主要原因,或者在非常大的数据集上。我有一些表,每个月要插入3000万行,但这只是一个很小的百分比,因此除非手动启动,否则通常不会更新统计信息。 — JNK 2012年 +1另外,您可以按计划执行以重置计数器,这意味着在维护时段之外的机会更少。 — gbn 2012年
7 还有更多(表面的)原因: 自动更新统计信息将阻止触发更新的查询,直到新统计信息准备就绪为止。 ...除非您还异步启用自动更新统计信息。然后,触发更新的查询将不等待新的统计信息,但可能会与旧的不正确的统计信息一起运行。 当带有一些相对较大的表(44M行,8.5 GB)的数据库开始更新统计信息时,我还遇到了一些奇怪的阻塞问题。但是,在我能够真正跟踪正在发生的事情之前,我们已经停用了该应用程序。 — db2 source 1 +1这是关于阻止和异步选项的重点。 — 亚伦·伯特兰
5 是的,请记住,自动统计信息始终以默认采样率生成。该默认采样率可能无法准确生成代表您的数据的统计信息。 http://sqlblog.com/blogs/elisabeth_redei/archive/2009/03/01/lies-damned-lies-and-statistics-part-i.aspx — 金宝 source