exec sp_updatestats做什么?

Vig*_*esh 29 sql sql-server database-performance

有什么用sp_updatestats?我可以在生产环境中运行它以提高性能吗?

dea*_*ean 35

sp_updatestats更新数据库中所有表的所有统计信息,即使单行已更改.它使用默认样本执行此操作,这意味着它不会扫描表中的所有行,因此它可能会生成比备选项更不准确的统计信息.

如果您有包含"重建索引"的维护计划,它还会刷新统计信息,但更准确,因为它会扫描所有行.重建索引后无需重建统计信息.

使用update statistics命令手动更新特定统计信息对象或表可以更好地控制进程.要自动化,请看这里.

仅在优化程序决定必须时才会触发自动更新.2012年的数学发生了变化:在<2012年,表格行每变化500 + 20%就触发了自动更新; 在2012年以上它是SQRT(1000*表行).这意味着它在大型桌子上更频繁.当然,临时表的行为也不同.

总而言之,sp_updatestats实际上可能造成的伤害大于好,并且是最不值得推荐的选择.

  • @dean我对你对此后果的担忧感兴趣吗?"实际上可以造成更多伤害,并且是最不值得推荐的选择." - 似乎唯一的问题是它可能会做你的维护计划已经做过的事情,或效率低下,但如果替代方案是一个没有响应的SQL服务器实例,那么问题有多大? (11认同)