1) 以前SQL Server更新一张表/索引的间隔是固定的,创建时更新一次,到了500行时更新第二次,接下来就是呈百分比式的间隔去更新,距离数据修改量达到表的行数量的的20%再次触发更新。但是这样的弊端就是对于大表而言容易造成统计数据过时而影响执行计划的选择。那么SQL Server 2016以前的解决做法是:1)频繁手动更新表的统计数据;2)开启traceflag 2371(开启这个跟踪标记后SQL Server会根据表的行数量来决定要不要启动更新,而不依赖于20%这个标准)。那么SQL Server 2016在更新统计数据时的默认行为是对于大表它会根据表的数据降低这个20%的数字,这样traceflag 2371就没用了。
2)UPDATE STATISTICS 选用SAMPLE是可以并行去取样。
参考:
Changes to automatic update statistics in SQL Server – traceflag 2371