MS SQL 统计信息浅析上篇
统计信息参数
数据库的统计信息相关参数有三个: 自动创建统计信息(Auto Create Statistics)、自动更新统计信息(Auto Update Statistics)、自动异步更新统计信息(Auto Update Statistics Asynchronously),它们都是数据库级别的。
自动创建统计信息(Auto Create Statistics)
该参数指定数据库是否自动创建缺少的优化统计信息。如果设置为True,则将在优化过程中自动生成优化查询需要但缺少的所有统计信息。当开启自动创建统计信息(Auto Create Statistics)选项时,查询优化器会对在谓词中使用到的列,如果这些列的统计信息不可用或缺少时,则会单独对每列创建统计信息。这些统计信息对创建一个查询计划非常必要。它们创建于那些现有统计对象中不存在直方图的列上,名字包括列名和对象ID的十六进制格式:_WA_Sys_<column_name>_<XXXX>。这些统计信息用于查询优化器决定使用何种优化后的执行计划。
自动更新统计信息(Auto Update Statistics)
该参数指定数据库是否自动更新过期的优化统计信息。如果设置为True,则将在优化过程中自动生成优化查询需要但已过期的所有统计信息。否则不自动更新统计信息。
自动异步更新统计信息(Auto Update Statistics Asynchronously)
如果设置为 True,则启动过期统计信息的自动更新,查询在编译前不会等待统计信息被更新。后续查询将使用可用的已更新统计信息。如果设置为 False,则启动过期统计信息的自动更新的查询将等待,直到更新的统计信息可在查询优化计划中使用。将该选项设置为 True 不会产生任何影响,除非“自动更新统计信息”也设置为 True
关于这三个参数,一般建议开启自动创建统计信息、自动更新统计信息选项,关闭自动异步更新统计信息。
1:对于自动创建统计信息选项,因为统计信息对查询优化器至关重要,没有统计信息,也就失去了它基于成本的优化器的意义,成为无土之木、无源之水。
服务范围:定制各类计算机程序设计,vue、jsp、java 各类框架;开发工具 eclipse / myeclipse / idea / vs 等;wap、android、ssm、springboot、asp.net、php、python(爬虫、django、flask)、node.js、react、winform、uniapp 小程序等。
