浅谈SQL Server中统计对于查询的影响分析


当前第2页 返回上一页

    我们来验证一下这个结论,如图5所示。

   

    图5.估计的行数

    因此,可以看出,估计的行数是和实际的行数有出入的,当数据分布均匀时,或者数据量大时,这个误差将会变的非常小。

统计信息的更新

    由上面的例子可以看到,查询分析器由于依赖于统计信息进行查询,那么过时的统计信息则可能导致低效率的查询。统计信息既可以由SQL Server来进行管理,也可以手动进行更新,也可以由SQL Server管理更新时手动更新。

    当开启了自动更新后,SQL Server监控表中的数据更改,当达到临界值时则会自动更新数据。这个标准是:

    向空表插入数据时     少于500行的表增加500行或者更多     当表中行多于500行时,数据的变化量大于20%时

    上述条件的满足均会导致统计被更新。

    当然,我们也可以使用如下语句手动更新统计信息。

     

     UPDATE STATISTICS 表名[索引名]

列级统计信息

    SQL Server还可以针对不属于任何索引的列创建统计信息来帮助查询分析器获取”估计的行数“.当我们开启数据库级别的选项“自动创建统计信息”如图6所示。

   

    图6.自动创建统计信息

   当这个选项设置为True时,当我们where谓词指定了不在任何索引上的列时,列的统计信息会被创建,但是会有以下两种情况例外:

    创建统计信息的成本超过生成查询计划的成本     当SQL Server忙时不会自动生成统计信息

   我们可以通过系统视图sys.stats来查看这些统计信息,如图7所示。

   

    图7.通过系统视图查看统计信息

    当然,也可以通过如下语句手动创建统计信息:

    CREATE STATISTICS 统计名称 ON 表名 (列名 [,...n])

总结

    本文简单谈了统计信息对于查询路径选择的影响。过时的统计信息很容易造成查询性能的降低。因此,定期更新统计信息是DBA重要的工作之一。

更多SQL内容来自木庄网络博客


标签:SQL

返回前面的内容

相关阅读 >>

php mssql 分页实例

c#如何实现对sql server数据库的增删改查

sql server 2016 查询存储性能优化小结

sql的九个常用语句是什么

mysql数据库简介与基本操作

navicat怎么写sql

sqlserver系统函数介绍

sql的功能包括哪四个部分?

sql截取字符串前几位

mysql数据操作管理示例详解

更多相关阅读请进入《sql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...