SQL Server统计信息(1)——创建和更新统计信息

发表于:2013-4-07 13:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:黄钊吉    来源:51Testing软件测试网采编

  简介:

  查询的统计信息:

  目前为止,已经介绍了选择索引、维护索引。如果有合适的索引并实时更新统计信息,那么优化器会选择有用的索引供查询之用,因为SQLServer优化器是基于开销的优化。当在where和on上的列上的数据需要显示在结果集的时候,如果有实时的统计信息,优化器会选择最好的执行方式,因为优化器会从统计信息中获得这些数据的明细情况。

  在创建索引的时候,SQLServer就会在索引列上创建统计信息。简单来说,统计信息就是索引或者列上能够描述数据分布的数据。

  查询选择性:

  公式:列上不重复数据的总数/列上的数据总数

  选择性越高,索引性能越好,当上述公式的值为1时,可以用于做为主键或者唯一键。

  创建和更新统计信息:

  统计信息有助于SQLServer优化引擎选择合适的索引及相关操作用于执行SELECT语句。有两个方式创建和更新统计信息:

  1、手动创建和更新统计信息

  2、自动创建和更新统计信息

  准备工作

  在开始之前,先来看看如何查找数据库的当前统计信息设置:

SELECT  CASE WHEN DATABASEPROPERTYEX('master', 'IsAutoCreateStatistics') = 1
             THEN 'Yes'
             ELSE 'No'
        END AS 'IsAutoCreateStatistics?' ,
        CASE WHEN DATABASEPROPERTYEX('Master', 'IsAutoUpdateStatistics') = 1
             THEN 'Yes'
             ELSE 'No'
        END AS 'IsAutoUpdateStatistics?' ,
        CASE WHEN DATABASEPROPERTYEX('Master', 'Is_Auto_Update_stats_async_on') = 1
             THEN 'Yes'
             ELSE 'No'
        END AS 'IsAutoUpdateStatsaAyncOn?'
GO

  下面的语句用于显示where子句中的数据库或者表的统计信息情况:

SELECT  object_id ,

        OBJECT_NAME(object_id) AS TableName ,

        name AS StatisticsName ,

        auto_created

FROM    sys.stats

--where object_id=OBJECT_ID('Sales.SalesOrderHeader')

ORDER BY object_id DESC

GO

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号