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

WBOY
풀어 주다: 2016-06-07 15:19:03
원래의
1357명이 탐색했습니다.

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

前言:

        从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、  结果如下:

 

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

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、  结果如下:

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

分析:

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

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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!