第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息

原文:第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息

前言:

        从2008开始,引入了一个增强非聚集索引的新功能——过滤索引(filter index),可以使用带有where条件的语句来创建非聚集索引,过滤掉不需要的数据,降低索引的维护开销和存储空间,提高查询性能。

 

准备工作:

在AdventureWorks2012上,有一个Production.WorkOrder表,将使用这个表来做演示。

 

步骤:

1、  创建一个非聚集索引在Production.WorkOrder列:

CREATE INDEX idx_WorkOrder_ScrapReasonID ON Production.WorkOrder(ScrapReasonID)

GO

 

2、  创建一个非聚集索引会自动更新对应的统计对象:

DBCC SHOW_STATISTICS('Production.WorkOrder',IX_WorkOrder_ScrapReasonID)

GO

 

 

3、  结果如下:

 

4、  查看All denisty列,现在删掉之前的索引,并创建一个过滤索引:

DROP INDEX IX_WorkOrder_ScrapReasonID ON Production.WorkOrderGO CREATE INDEX IX_WorkOrder_ScrapReasonID ON Production.WorkOrder(ScrapReasonID)WHERE ScrapReasonID IS NOT NULL GO

 

 

5、  再次执行并查看All density列,最后删除这个索引:

 

 DBCC SHOW_STATISTICS('Production.WorkOrder',IX_WorkOrder_ScrapReasonID)

GO

DROP INDEX IX_WorkOrder_ScrapReasonID ON Production.WorkOrder

GO

 

 

6、  结果如下:

 

分析:

        从上面的两个图中对比结果可以知道,第一个结果集,在row sampled列是不同的,第一个是72591,第二个是729,相差了接近100倍,在Filter Expression列,一个是null一个是有值。

        在All density列,第一个显示的是ScriptReasonID列,这个没有什么明显的差别。但是第二个就有比较大的差异。因为ScriptReasonID是指向聚集索引的非聚集索引列。

时间: 2024-09-22 12:42:44

第十二章——SQLServer统计信息(4)——在过滤索引上的统计信息的相关文章

第十二章——SQLServer统计信息(3)——发现过期统计信息并处理

原文:第十二章--SQLServer统计信息(3)--发现过期统计信息并处理 前言:         统计信息是关于谓词中的数据分布的主要信息源,如果不知道具体的数据分布,优化器不能获得预估的数据集,从而不能统计需要返回的数据.         在创建列的统计信息后,在DML操作如insert.update.delete后,统计信息就会过时.因为这些操作更改了数据,影响了数据分布.此时需要更新统计信息.         在高活动的表中,统计信息可能几个小时就会过时.对于静态表,可能几个星期才会过

第十二章——SQLServer统计信息(2)——非索引键上统计信息的影响

原文:第十二章--SQLServer统计信息(2)--非索引键上统计信息的影响 前言:         索引对性能方面总是扮演着一个重要的角色,实际上,查询优化器首先检查谓词上的统计信息,然后才决定用什么索引.一般情况下,默认会在创建索引时,索引列上均创建统计信息.但是不代表在非索引键上的统计信息对性能没有用.         如果表上的所有列都有索引,那么将会是数据库负担不起,同时也不是一个好想法,包括谓词中用到的所有列加索引同样也不是好方法.因为索引会带来负载.因为需要空间存放索引,且每个D

第十二章——SQLServer统计信息(1)——创建和更新统计信息

原文:第十二章--SQLServer统计信息(1)--创建和更新统计信息 简介: 查询的统计信息: 目前为止,已经介绍了选择索引.维护索引.如果有合适的索引并实时更新统计信息,那么优化器会选择有用的索引供查询之用,因为SQLServer优化器是基于开销的优化.当在where和on上的列上的数据需要显示在结果集的时候,如果有实时的统计信息,优化器会选择最好的执行方式,因为优化器会从统计信息中获得这些数据的明细情况. 在创建索引的时候,SQLServer就会在索引列上创建统计信息.简单来说,统计信息

【PMP】Head First PMP 学习笔记 第十二章 采购管理

第十二章 采购管理 某些工作就是太大,以至于你的公司无法自行完成. 找到合适的卖方,选择正确类型的关系并确保合同的目标被打成. 有时候,你需要雇用外部公司做一部分的项目工作.这叫做采购(procurement),该外部公司被称为卖方. 项目采购管理包括合同管理和变更控制过程 规划采购管理 实施采购 控制采购 结束采购 项目采购管理围绕包括合同在内的协议来进行.协议是买卖双方之间的法律文件. 合同也可称作协议.谅解.分包合同或订购单. 在合同生命周期中,卖方首先是投标人.然后是中标人,之后是签约供

第十二章 委托[《.net框架程序设计》读书笔记]

.net框架|笔记|程序|设计 第十二章 委托 一. 委托的使用 静态委托和实例委托,使用方法类似,这里给出一个使用可变参数委托的例子: using System; public class DelCls { public delegate void DelDef(params string[] strParams); public static void CallDel(DelDef dd) { if(dd != null) //请务必在此处进行判断,这是个好习惯 { dd("Hello&qu

Android群英传笔记——第十二章:Android5.X 新特性详解,Material Design UI的新体验

Android群英传笔记--第十二章:Android5.X 新特性详解,Material Design UI的新体验 第十一章为什么不写,因为我很早之前就已经写过了,有需要的可以去看 Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 这一章很多,但是很有趣,也是这书的最后一章知识点了,我现在还在考虑要不要写这个拼图和2048的案例,在此之前,我们先来玩玩Android5.X的新特性吧!

python 教程 第二十二章、 其它应用

第二十二章. 其它应用 1)    Web服务 ##代码 s 000063.SZ ##开盘 o 26.60 ##最高 h 27.05 ##最低 g 26.52 ##最新 l1 26.66 ##涨跌 c1 -0.04 ##涨幅 p2 -0.15% ##总手 v 9190865 ##日期 d1 6/15/2011 ##时间 t1 3:00am #!/usr/bin/env python from time import ctime from urllib import urlopen import

python 教程 第十二章、 标准库

第十二章. 标准库 See Python Manuals ? The Python Standard Library ? 1)    sys模块 import sys if len(sys.argv) < 2: print 'No action specified.' sys.exit() if sys.argv[1].startswith('--'): option = sys.argv[1][2:] if option == 'version': print 'Version 1.2' el

DNF第十二章正式上线女枪四大转职一并放出

(综合/小鸢)2月22日,<地下城与勇士>(简称:DNF)第十二章"划破夜空的子弹"正式上线,同时,人气天王天界玫瑰--女神枪手四大转职也一并放出. 自天界玫瑰华丽上线以来,女神枪手一直备受广大玩家的追捧和关注.今日,随着第十二章上线,女神枪手强势觉醒. 女神枪手分四个职业,分别是女漫游枪手.女枪炮师.女机械师和女弹药师,每个职业都将分别觉醒. 女漫游枪手觉醒为沾血蔷薇,主动觉醒技双枪极舞刃: 女枪炮师觉醒为重炮掌控者,主动觉醒技EMP磁暴: 女机械师觉醒为机械之心,主动觉