SQL Server自动更新统计信息的基本算法

 更新时间:2012年08月15日 09:29:47   作者:  
最初接触SQL Server的时候认为SQLServer数据更改的同时就会相应的更新统计信息,其实SQL Server不是这样做的.基于性能考虑,SQL Server使用下面的算法更新统计信息
自动更新统计信息的基本算法是:

· 如果表格是在 tempdb 数据库表的基数是小于 6,自动更新到表的每个六个修改。
· 如果表的基数是大于 6,但小于或等于 500,更新状态每 500 的修改。
· 如果基数大于 500,表为更新统计信息时(500 + 20%的表)发生了更改。
· 表变量为基数的更改不会触发自动更新统计信息。

注意:此严格意义上讲,SQL Server 计算基数为表中的行数。

注意:除了基数,该谓语的选择性也会影响 AutoStats 生成。这意味着该统计信息可能无法更新的 afer 每 500 修改基数是 < 500 或更改的每个 20%的基数好像 > 500。比例因子(值的范围从 1 到 4、 1 和 4 之间)上生成根据选择性,这一因素的更改从算法获得数的乘积 AutoStats 生成所需的修改的实际数目。

在表的窗体中,可以summarised 以上算法:
_________________________________________________________________________________
Table Type | Empty Condition | Threshold WhenEmpty |Threshold When Not Empty
_________________________________________________________________________________
Permanent | < 500 rows | # ofChanges >= 500 | # of Changes >=500 + (20% of Cardinality)
___________________________________________________________________________
Temporary | < 6 rows | # ofChanges >= 6 | # of Changes >=500 + (20% of Cardinality)
___________________________________________________________________________
Table
Variables | Change in cardinality does not affectAutoStats generation.
___________________________________________________________________________


作者 SmithLiu328

相关文章

  • SQL bool盲注和时间盲注详解

    SQL bool盲注和时间盲注详解

    这篇文章主要介绍了SQL bool盲注和时间盲注详解,需要的朋友可以参考下
    2022-07-07
  • SQLServer2000 报1053错误(服务没有及时响应或控制请求)的解决方法

    SQLServer2000 报1053错误(服务没有及时响应或控制请求)的解决方法

    发生错误 1053-(服务没有及时响应或控制请求。),此时正在 MSSQLServer 服务上执行该服务操作。我立即上网查找相关信息,看见有人说是更改windows用户密码后便出现此类问题,但说得都不是很明白,所以自己想总结一下
    2013-06-06
  • sqlserver附加.mdf权限问题解决

    sqlserver附加.mdf权限问题解决

    sqlserver附加.mdf权限问题解决,需要的朋友可以参考一下
    2013-03-03
  • MSSQL数据库排序规则如何更改

    MSSQL数据库排序规则如何更改

    更改 SQL Server 2005 实例的默认排序规则的操作可能会比较复杂,本文将提供详细的操作步骤,需要了解的朋友可以参考下
    2012-11-11
  • 非常好用的sql语句(日常整理)

    非常好用的sql语句(日常整理)

    本文给大家分享几个比较好用的sql语句,在数据库中经常会用到,需要的朋友可以参考下本篇文章。
    2015-09-09
  • sql语句查询重复的数据(最新推荐)

    sql语句查询重复的数据(最新推荐)

    这篇文章主要介绍了sql语句查询重复的数据,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • 浅析SQL Server中包含事务的存储过程

    浅析SQL Server中包含事务的存储过程

    数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行。那么在存储过程里添加事务,则可以保证该事务里的所有sql代码要么完全执行要么完全不执行。
    2014-08-08
  • SQLServer触发器创建、删除、修改、查看示例代码

    SQLServer触发器创建、删除、修改、查看示例代码

    触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。
    2010-06-06
  • 在SQL中该如何处理NULL值

    在SQL中该如何处理NULL值

    在日常使用数据库时,NULL值在数据库中是一个很特殊且有趣的存在,本文介绍了在SQL中该如何处理NULL值,感兴趣的可以了解一下
    2021-05-05
  • SQLServer中SELECT语句的执行顺序

    SQLServer中SELECT语句的执行顺序

    关于Sql中Select语句的执行顺序,一直很少注意这个问题,对于关键字的使用也很随意,至于效率问题,因为表中的数据量都不是很大,所以也不是很在意。
    2010-06-06

最新评论