浅谈SQL Server中统计对于查询的影响(2)

来源:未知 责任编辑:责任编辑 发表时间:2015-03-01 01:38 点击:

这个公式为:估计的行数=表中的行数*密度
    那么,根据这个公式,如果我做查询时,估计的行数就会为如图4所示的数字。
    
5
 
    图4.估计的行数
 
    我们来验证一下这个结论,如图5所示。
    
6
 
    图5.估计的行数
 
    因此,可以看出,估计的行数是和实际的行数有出入的,当数据分布均匀时,
或者数据量大时,这个误差将会变的非常小。
 
统计信息的更新
    由上面的例子可以看到,查询分析器由于依赖于统计信息进行查询,
那么过时的统计信息则可能导致低效率的查询。统计信息既可以由SQL Server来进行管理,
也可以手动进行更新,也可以由SQL Server管理更新时手动更新。  www.2cto.com  
    当开启了自动更新后,SQL Server监控表中的数据更改,当达到临界值时则会自动更新数据。
这个标准是:
    向空表插入数据时
    少于500行的表增加500行或者更多
    当表中行多于500行时,数据的变化量大于20%时
    上述条件的满足均会导致统计被更新。
    当然,我们也可以使用如下语句手动更新统计信息。
     
     UPDATE STATISTICS 表名[索引名]
 
列级统计信息
    SQL Server还可以针对不属于任何索引的列创建统计信息来帮助查询分析器获取”
估计的行数“.当我们开启数据库级别的选项“自动创建统计信息”如图6所示。
    
7
 
    图6.自动创建统计信息
 
   当这个选项设置为True时,当我们where谓词指定了不在任何索引上的列时,
列的统计信息会被创建,但是会有以下两种情况例外:  www.2cto.com  
    创建统计信息的成本超过生成查询计划的成本
    当SQL Server忙时不会自动生成统计信息
 
   我们可以通过系统视图sys.stats来查看这些统计信息,如图7所示。
    
8
 
    图7.通过系统视图查看统计信息
 
    当然,也可以通过如下语句手动创建统计信息:
    CREATE STATISTICS 统计名称 ON 表名 (列名 [,...n])
 
 
 
作者 宋沄剑
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • sql常见面试题
  • SQL SERVER 2005性能之跟踪
  • sql server 列转行
  • SQL SERVER2008日常自动化备份
  • SQL Server 2005 镜像构建手册
  • LINUX上RMAN自动备份脚本
  • 如何将多个SQL查询统计结果一次显示出来
  • SQL编程(一)
  • 浅谈SQL Server中的事务日志(三)----在简单恢复模式下日志的角色

数据库技术导航

SqlserverMysqlOracleDB2数据库数据库综合
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索 - 移动版 - 返回顶部
Copyright © 2008-2013 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1