SQL SERVER 统计信息概述(Statistics)
前言
查询优化器使用统计信息来创建可提高查询性能的查询计划,对于大多数查询,查询优化器已经为高质量查询计划生成必要的统计信息,但是在少数情况下,您需要创建附加的统计信息或者修改查询设计以得到最佳结果。因此理解和合理使用统计信息是数据库优化的方式之一。
统计信息的分类
根据创建源的不同,统计信息分为两种表统计信息和索引统计信息,除非你自定义它们,否则它们之间没有本质的区别。
索引统计信息建立在索引上面,因此对于创建已经存在的数据上,在创建索引的时候会扫描全部数据,这些数据也会创建在索引的统计信息上。
表的统计信息创建在列上面。对于已经存在的数据表上面,需要对某些列使用过滤方法(比如 WHERE,JOIN-ON),会在上面自动建立统计信息。只是它们使用采样数据而不是全部数据。
统计信息的存储
统计信息存储在一系列的系统表中,比如Sysindex,你可以通过系统视图sys.stats 和 Sys.index来查看部分信息。但是详细的信息可以通过系统函数DBCC SHOW_STATISTICS来查看。统计信息本身占用很少的磁盘空间,所以不需要关注是否删除不必要的统计信息来释放更多的磁盘空间。
怎样查看统计信息的更新时间
DBCC SHOW_STATISTICS
语法
DBCC SHOW_STATISTICS ( table_or_indexed_view_name , target )
[ WITH [ NO_INFOMSGS ] < option > [ , n ] ]
< option > :: = STAT_HEADER | DENSITY_VECTOR | HISTOGRAM | STATS_STREAM
参数
要显示其统计信息的表或索引视图的名称。
要显示其统计信息的索引、统计信息或列的名称。 如果 target 是表或索引视图的现有索引或统计信息的名称,则返回有关此目标的统计信息。 如果 target 是现有列的名称,且此列中存在自动创建的统计信息,则返回有关该自动创建的统计信息的信息。 如果列目标中不存在自动创建的统计信息,则返回错误消息 2767。
取消严重级别从 0 到 10 的所有信息性消息。
如果指定以上一个或多个选项,将根据指定的选项限制该语句返回的结果集。 如果没有指定任何选项,则返回所有统计信息。
实例
下面的示例显示 AdventureWorks2012 数据库中 Person.Address 表的 AK_Address_rowguid 索引的所有统计信息
DBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid);
下面的示例将为 AK_Address_rowguid索引显示的统计信息限制为 HISTOGRAM 数据。
DBCC SHOW_STATISTICS ("Person.Address", AK_Address_rowguid) WITH HISTOGRAM;
什么时候需要维护统计信息
- 查询执行时间很长
- 在升序或者是降序键列上发生插入操作
- Truncate 表或者对表大部分列进行大容量的插入后
怎样维护统计信息
SQL Server 提供两个基本的命令来更新统计信息
- sp_updatestats
- update statistics
在后续的文章中将讲述这2个命令的区别和使用方法。
SQL SERVER 统计信息概述(Statistics)的更多相关文章
- 全废话SQL Server统计信息(2)——统计信息基础
接上文:http://blog.csdn.net/dba_huangzj/article/details/52835958 我想在大地上画满窗子,让所有习惯黑暗的眼睛都习惯光明--顾城<我是一个 ...
- 全废话SQL Server统计信息(1)——统计信息简介
当心空无一物,它便无边无涯.树在.山在.大地在.岁月在.我在.你还要怎样更好的世界?--张晓风<我在> 为什么要写这个内容? 随着工作经历的积累,越来越感觉到,大量的关系型数据库的性能问题 ...
- SQL Server统计信息:问题和解决方式
在网上看到一篇介绍使用统计信息出现的问题已经解决方式,感觉写的很全面. 在自己看的过程中顺便做了翻译. 因为本人英文水平有限,可能中间有一些错误. 假设有哪里有问题欢迎大家批评指正.建议英文好的直接看 ...
- SQL Server 统计信息(Statistics)-概念,原理,应用,维护
前言:统计信息作为sql server优化器生成执行计划的重要参考,需要数据库开发人员,数据库管理员对其有一定的理解,从而合理高效的应用,管理. 第一部分 概念 统计信息(statistics):描述 ...
- SQL Server 统计信息的创建与更新
前期准备: 普通表.临时表:它两会有统计信息. 表变量: 不会有统计信息. ---------------------------------------------------- ...
- SQL Server 统计信息更新时采样百分比对数据预估准确性的影响
为什么要写统计信息 最近看到园子里有人写统计信息,楼主也来凑热闹. 话说经常做数据库的,尤其是做开发的或者优化的,统计信息造成的性能问题应该说是司空见惯. 当然解决办法也并非一成不变,“一招鲜吃遍天” ...
- SQL Server 统计信息
SELECT * FROM SYS.stats _WA_Sys_00000009_00000062:统计对象的名称.不同的机器名称不同,自动创建的统计信息都以_WA_Sys开头,00000009表示的 ...
- SQL Server统计信息偏差影响表联结方式案例浅析
我们知道数据库中的统计信息的准确性是非常重要的.它会影响执行计划.一直想写一篇关于统计信息影响执行计划的相关博客,但是都卡在如何构造一个合适的例子上,所以一直拖着没有写.巧合,最近在生产环境中遇到 ...
- SQL Server 统计信息对查询的影响
优化器根据开消确定选择哪个执行计划,开消又与行数统计信息有关,默认情况下统计信息是在优化的过程中自动生成的. 一旦列被标记为需要统计信息,查询优化器就会查找该列以有的统计信息,如果以有一个统计信息,下 ...
随机推荐
- Java验证码识别解决方案
建库,去重,切割,识别. package edu.fzu.ir.test; import java.awt.Color; import java.awt.image.BufferedImage; im ...
- python tkinter用Treeview实现ListView效果
先上图 再上代码: import ttk from Tkinter import * root = Tk() tree = ttk.Treeview(root, columns=('col1','co ...
- django 实战 - eLeave Form
需求: 实现请假单的电子审批 1. 支持国际化 2. 支持模型级别的访问记录 here we go: 这里会写一系列的文章,来记录我实战的过程,由于接触django没多久,难免有疏漏之处,望拍砖不要太 ...
- SCP 和 rsync限速以及用法
rsync限速以及用法 -- :: 标签:限速 rsync 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://xficc.blog. ...
- 学 Redux (转)
0.官方文档:http://redux.js.org/ 中文版本 : http://cn.redux.js.org/ 中文版本(好!): http://www.css88.com/react/d ...
- PHP-FPM的常用操作
PHP-FPM安装完毕之后,没有自带的结束命令,可以通过以下方法结束: 1.首先查看PHP-FPM进程号: ps -ef | grep php-fpm 可以看到master进程号为91790,有两个子 ...
- Java I/O模型的简单说明
1.同步和异步 同步:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行,最简单的例子就是顺序的执行两个方法,当第 ...
- FastReport调用Delphi中的人民币大写转换自定义函数
FastReport调用Delphi中的人民币大写转换自定义函数 FastReport调用Delphi中的人民币大写转换自定义函数 function TJzpzEdit1.MoneyCn(mmje ...
- Slave SQL: Error 'Incorrect string value ... Error_code: 1366
背景: 主从环境一样,字符集是utf8. Slave复制报错,平时复制都正常也没有出现过问题,今天突然报错: :: :: :: :: Error_code: :: perror 1366 MySQL ...
- Pythonj~module
常数,变量 特殊变量:__xxx__ 可以被直接引用 private函数:_xxx __xxx__ 外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public. 导入 ...