SQL Server 统计信息对查询的影响
优化器根据开消确定选择哪个执行计划,开消又与行数统计信息有关,默认情况下统计信息是在优化的过程中自动生成的。
一旦列被标记为需要统计信息,查询优化器就会查找该列以有的统计信息,如果以有一个统计信息,下一步就会对它进行,检查
以确定它足够新。如果过期就重建统计信息。(由此可见统计信息是基于列的)。
--------------------------------------------------------------------------------------------------------------------------------
在数据库中自动创建统计信息的选项默认开启:
alter database .... set auto_create_statistics {on | off};
alter database .... set auto_update_statistics {on | off};
如果系统的自动创建被禁用,查询会输出一条警告。在这个模式下DBA 要保证统计信息对象是最新的。
可以对操作进行提示来控制统计信息对象的行为。
create index .... with(statistics_norecompute = on)
create statistics .... with(norecompute)
虽然这一些选项一般来说是开启的,但是下面情况可禁用创建或更新统计信息的功能。
1、DBA 明确决定更新统计信息而不是自动更新,数据库有一个维护窗口,这种情况下是DBA 相信统计信息改变会使
优化器选择一种比较慢的计划
2、数据表太大、自动更新发的时间太长。
3、数据库表中有许多的唯一值,用于生成统计信息的采样频率不足以获取生成一个优良执行计划所需的所有统计信息。
DBA 可以利用一个维护窗口提高采样频率(默认频率会根据表大小而变化)手动更新统计信息。
4、数据库定义了一个很短的查询超时并且不希望自动统计信息造成查询时间明显长很多,因为这样可能会引起查询超时。
SQL Server 统计信息对查询的影响的更多相关文章
- 全废话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 统计信息概述(Statistics)
前言 查询优化器使用统计信息来创建可提高查询性能的查询计划,对于大多数查询,查询优化器已经为高质量查询计划生成必要的统计信息,但是在少数情况下,您需要创建附加的统计信息或者修改查询设计以得到最佳结果. ...
- SQL Server 统计信息
SELECT * FROM SYS.stats _WA_Sys_00000009_00000062:统计对象的名称.不同的机器名称不同,自动创建的统计信息都以_WA_Sys开头,00000009表示的 ...
- SQL Server 统计信息的创建与更新
前期准备: 普通表.临时表:它两会有统计信息. 表变量: 不会有统计信息. ---------------------------------------------------- ...
随机推荐
- 无废话MVC入门教程二[第一个小Demo]
mvc技术交流,欢迎加群: 本文目标 1.了解"模型"."视图"."控制器"的创建.调试和使用过程. 本文目录 1.创建模型 2.创建视图 ...
- Servlet 浅谈(一)
Servlet 的生命周期 类加载.实例化,init方法,service方法,destroy方法.关于这点,后面会有详细介绍. 什么是容器? 因为Servlet没有main方法,所以它受控于另一个Ja ...
- phpcms v9 万能字段使用
<input type="text" name="info[down]" id="down" value="{FIELD_V ...
- Python学习笔记(二)Python的数据类型和变量
Python的字符串 Python使用''和""将字符串括起来,与ruby类似,特殊之处是Python可以使用r''表示''内部的字符串默认不转义,如: print(r'\\\t\ ...
- lex 和 yacc 的区别与联系
lex负责词法解析,而yacc负责语法解析,其实说白了就是lex负责根据指定的正则表达式,将输入的字符串匹配成一个一个的token,同时允许用户将当前匹配到的字符串进行处理,并且允许返回一个标识当前t ...
- Oracle EBS-SQL (PO-8):检查有供货比例无采购员.sql
select distinct msr.sourcing_rule_name 名称 , msi.description 说明 , ...
- ASP.NET缓存中Cache过期的三种策略
原文:ASP.NET缓存中Cache过期的三种策略 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存. <asp:Button ID=&quo ...
- CATALINA_BASE与CATALINA_HOME的区别(转)
到底CATALINA_HOME和CATALINA_BASE有什么区别呢,之前因为都是小打小闹的在服务器上安装一个tomcat就得了,然后根据前人的配置,将CATALINA_HOME和CATALINA_ ...
- iOS中如何呼出另一个应用
我们经常会遇到在一个应用里面呼出另一个应用的需求,比如在文档里面点击地址,调用safari来打开网页:比如在文件浏览器里面点击某种文件,自动激活一个应用来打开文件. iOS里面对于这样的需求使用URL ...
- spring MVC通过json与前台交互
这里用的是spring4.1.4,jquery2.1.3,其它环境为:myeclipse2014,tomcat7,jdk7 首先,新建一个web工程,并导入springMVC的jar包(为了方便起见我 ...