mssql sqlserver 统计信息自动更新和自动创建选项简介


摘要:
统计信息在sqlserver中起着非常重要的作用,sqlserver中各种查询操作,都会依据统计信息的统计值,选择不同的执行模式,调用不用的执行计划,
下文将讲述开启自动创建统计信息和更新统计的相关设置选项



统计信息创建场景:
当我们创建索引时,系统会默认创建同此索引对应的统计信息
当数据库开启了 AUTO_CREATE_STATISTICS 属性时,当查询时,无相关索引对应时,系统会为此列创建相关统计信息


一、AUTO_CREATE_STATISTICS 、AUTO_UPDATE_STATISTICS选项说明

AUTO_CREATE_STATISTICS AUTO_UPDATE_STATISTICS 选项位于 “数据库属性”的“选项”tab上,如下图所示

——————————————————————
当 AUTO_CREATE_STATISTICS 选项设置为ON 时,数据库引擎会对查询过滤关键字或连接字中使用到的列,进行统计信息检测,如果存在可用的统计信息,则继续使用原统计信息,否则将会创建统计信息,
系统自动创建的统计信息包括以下
系统自动创建的统计信息样式如下:
_WA_Sys_00000000****_*********
开启系统自动创建统计信息的脚本如下:

   ALTER  DATABASE  [数据库名称]
   SET AUTO_CREATE_STATISTICS ON

——————————————————————
当 Auto Update Statistics 选项设置为ON时,数据库引擎会自动更新统计信息,使数据库引擎能准确的估算出数据行的大小。
触发统计计划变动的操作有如下几种:

1.当有数据改动时
2.当表数据行小于500行时,列数据变动超过500次
3.表行数发生20%的变化时

开启统计信息自动更新的脚本如下:

 
ALTER  DATABASE [数据库名称]
SET AUTO_UPDATE_STATISTICS ON