使用跟踪标记查看过滤统计信息是否被使用

原文:使用跟踪标记查看过滤统计信息是否被使用

    在某些情况下,表中数据较多,且分布不均匀的时候,执行计划的估计行数往往会有很大偏差,因此SQL Server 2008引入了过滤统计信息,意味着只对表中的特定数据计算统计信息。那么在调优查询的过程中如何知道语句是否使用了过滤统计信息呢?SQL Server提供了一个隐藏的跟踪标记来支持这一过程。下面Demo可以展示如何使用该跟踪标记。

 

    我们首先对AdventureWorks的SalesOrderDetail做一个简单的查询,代码如代码清单1所示。

SELECT DISTINCT        OrderQty,ProductID,SpecialOfferIDFROM    [AdventureWorks].[Sales].[SalesOrderDetail] AS cWHERE   [c].OrderQty = 1AND [c].ProductID = 800AND [c].SpecialOfferID = 1

代码清单1.一个简单的查询

 

    我们来看对应的执行计划,如图1所示。

   

    图1.估计的行数为264.474实际的行数为328

 

    因此,针对该特定查询,我们创建过滤统计信息,代码如代码清单2所示。

CREATE STATISTICS [filter_statistics]ON [Sales].[SalesOrderDetail] (OrderQty,ProductID)WHERE SpecialOfferID = 1;

代码清单2.创建过滤统计信息

 

    我们再来看执行计划,如图2所示。

   

    图2.应用过滤索引后估计的行数更准了

 

    那么,在调优语句的时候,我们想知道该语句是否使用了该过滤统计信息,则可以通过跟踪标记9204来查看,代码如代码清单3所示。

SELECT DISTINCT        OrderQty,ProductID,SpecialOfferIDFROM    [AdventureWorks].[Sales].[SalesOrderDetail] AS cWHERE   [c].OrderQty = 1AND [c].ProductID = 800AND [c].SpecialOfferID = 1OPTION  ( QUERYTRACEON 3604, QUERYTRACEON 9204); 

代码清单3.使用跟踪标记9204

 

    通过图3返回的信息我们看到过滤统计信息已经被正确使用。

图3.已经正确使用过滤统计信息

 

 

 

时间: 2024-07-30 20:43:04

使用跟踪标记查看过滤统计信息是否被使用的相关文章

SQL Server调优系列进阶篇(深入剖析统计信息)

原文:SQL Server调优系列进阶篇(深入剖析统计信息) 前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQL Server2008R2,利用微软的以前的案例库(Northwind)进行分析,部分内容也会应用微软的另一个案例库AdventureWorks 相信了解SQL Server的朋友,对这两个库都不会太陌生. 概念理解 关于SQL Ser

SQL Server深入剖析统计信息学习总结教程

前言 经过前几篇的分析,其实大体已经初窥到SQL Server统计信息的重要性了,所以本篇就要祭出这个神器了. 该篇内容会很长,坐好板凳,瓜子零食之类... 不废话,进正题 技术准备 数据库版本为SQL Server2008R2,利用微软的以前的案例库(Northwind)进行分析,部分内容也会应用微软的另一个案例库AdventureWorks 相信了解SQL Server的朋友,对这两个库都不会太陌生. 概念理解 关于SQL Server中的统计信息,在联机丛书中是这样解释的 查询优化的统计信

MS SQL统计信息浅析下篇

   MS SQL统计信息浅析上篇对SQL SERVER 数据库统计信息做了一个整体的介绍,随着我对数据库统计信息的不断认识.理解,于是有了MS SQL统计信息浅析下篇. 下面是我对SQL Server统计信息的一些探讨或认识,如有不对的地方,希望大家能够指正. 触发统计信息更新条件疑问     关于这个触发统计信息更新的条件.因为我在很多资料上看到过,例如Microsoft  SQL Server 企业级平台管理实践. 我自己上篇也是这样解释的.    1:普通表上,触发数据库自动更新统计信息

MS SQL 统计信息浅析上篇

统计信息概念     统计信息是一些对象,这些对象包含在表或索引视图中一列或多列中的数据分布有关的统计信息.数据库查询优化器使用这些统计信息来估计查询结果中的基数或行 数. 通过这些基数估计,查询优化器可以生成高质量的执行计划. 例如,查询优化器可以使用基数估计选择索引查找运算符而不是耗费更多资源的索引扫描运算符,从而提高查询性能.[参考MSDN]     其实如果你以前没有接触过统计信息,你可以将其看做是数据库为了得到最优的执行计划,统计数据库里面表.索引等对象的一些数据,例如表的记录数.所有

Oracle 11G统计信息自动收集及调整

从Oracle 11G开始,数据库统计信息的自动收集被整合到自动维护任务中,满足大多数情形下的运行需求.但对于在线商城,交易系统而言,可能需要调整其执行时间或者自行指定收集窗口.本文描述了如何查看以及调整自动收集统计时间窗口等,供大家参考. 一.缺省的统计信息相关状态查看 1.查看自动收集统计信息对应的task(也就是program的名称)及状态 --当前状态 SQL> select * from v$version where rownum<2; BANNER ---------------

Linux常用查看硬件设备信息命令大全(值得收藏)_Linux

# uname -a # 查看内核/操作系统/CPU信息 # head -n 1 /etc/issue # 查看操作系统版本 # cat /proc/cpuinfo # 查看CPU信息 # hostname # 查看计算机名 # lspci -tv # 列出所有PCI设备 # lsusb -tv # 列出所有USB设备 # lsmod # 列出加载的内核模块 # env # 查看环境变量 资源 # free -m # 查看内存使用量和交换区使用量 # df -h # 查看各分区使用情况 # du

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

原文:第十二章--SQLServer统计信息(4)--在过滤索引上的统计信息 前言:         从2008开始,引入了一个增强非聚集索引的新功能--过滤索引(filter index),可以使用带有where条件的语句来创建非聚集索引,过滤掉不需要的数据,降低索引的维护开销和存储空间,提高查询性能.   准备工作: 在AdventureWorks2012上,有一个Production.WorkOrder表,将使用这个表来做演示.   步骤: 1.  创建一个非聚集索引在Production

Word入门动画教程35:查看统计信息

Word文档的统计信息包括页数.段落数.行数.字数.字符数以及字节数等信息.可以按以下方法查看: 方法一:执行"文件"→"打开",在对话框中选中要查看的Word文档,单击"视图"下拉按钮,选择"属性",可以在打开文件前查看文档的统计信息. 方法二:执行"文件"→"属性",在"属性"对话框中选择"统计信息"选项卡. 方法三:执行"工具&qu

通过JVM查看关于Apache Geronimo的统计信息

简介:Apache Geronimo 应用服务器不仅是开放源码的,而且性能很高.所以 它是运行高性能应用程序的自然选择.但是,只是将应用程序运行在 Geronimo 中还不能保证它满足您的性能要求.有时候,可能需要分析和优化应用程序的效 率.有许多工具可用于该任务,但您可以通过分析 Java 虚拟机 (JVM) 统计信息基本完成该任务.本文将帮您体验如何从 JVM 获得统计信息,从而对应 用程序进行概要分析和优化,以满足性能需要. JVM 统计信息 JVM 提供许多统计信息.这些统计信息涉及诸如