--获取批处理信息的脚本(优化器在处理批处理时所发生的优化器事件)
SET NOCOUNT ON;
DBCC FREEPROCCACHE;
--清空过程缓存
GO
--使用tempdb..Optstats表来捕获执行几次
IF ( OBJECT_ID('dbo.tempdb..Optstats') IS NOT NULL )
DROP TABLE tempdb..Optstats;
GO
--创建临时表tempdb..Optstats
SELECT 0 Run ,
*
INTO tempdb..Optstats
FROM sys.dm_exec_query_optimizer_info;
GO
--该语句的计划将被保存到过程缓存
--这样下一次执行时不会产生任何优化器事件
--后面的Go用于确保下次执行这段脚本时可以重用Insert计划
GO
INSERT INTO tempdb..Optstats
SELECT 2 Run ,
*
FROM sys.dm_exec_query_optimizer_info;
GO
--清空临时列表
TRUNCATE TABLE tempdb..Optstats;
GO
--存储运行前的信息
GO
INSERT INTO tempdb..Optstats
SELECT 1 Run ,
*
FROM sys.dm_exec_query_optimizer_info;
GO
--执行批处理语句
SELECT C.CustomerID ,
COUNT(O.OrderID) NumOrders
FROM dbo.Customers C
LEFT JOIN dbo.Orders O ON O.CustomerID = C.CustomerID
WHERE C.City = 'London'
GROUP BY C.CustomerID
HAVING COUNT(O.OrderID) > 5
ORDER BY NumOrders;
GO
--保存到临时表
INSERT INTO tempdb..Optstats
SELECT 2 Run ,
*
FROM sys.dm_exec_query_optimizer_info;
GO
/*从临时表中取出Run1和Run2之间Occurrence或Value值发生改变的所有事件
然后显示执行批处理或查询之前(Run1Occurrence和Run1Value)和之后所有这些事件(Run2Occurrence和Run2Value)的Occurrence和Value*/
WITH X ( Run, Counter, Occurrence, Value )
AS ( SELECT *
FROM tempdb..Optstats
WHERE Run = 1
),
Y ( Run, Counter, Occurrence, Value )
AS ( SELECT *
FROM tempdb..Optstats
WHERE Run = 2
)
SELECT X.Counter ,
Y.Occurrence - X.Occurrence Occurrence ,
CASE Y.Occurrence - X.Occurrence
WHEN 0 THEN Y.Value * Y.Occurrence - X.Value * X.Occurrence
ELSE ( Y.Value * Y.Occurrence - X.Value * X.Occurrence )
/ ( Y.Occurrence - X.Occurrence )
END Value
FROM X
JOIN Y ON X.Counter = Y.Counter
AND ( X.Occurrence <> Y.Occurrence
OR X.Value <> Y.Value
);
GO
--删除临时表
DROP TABLE tempdb..Optstats;
GO

sql 获取批处理信息的脚本(优化器在处理批处理时所发生的优化器事件)的更多相关文章

  1. 将SQL获取的信息传递到Email中

    将SQL获取的信息传递到Email中 最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台 ...

  2. SSIS 实例——将SQL获取的信息传递到Email中

    最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台上进行支付操作.由于那个时候开发时间很 ...

  3. linux下获取服务器硬件信息的脚本

    这是个简单的脚本,便于查询服务器的硬件信息: #!/bin/bash # # Description: # Used to get the hardware config information. # ...

  4. SQL Server 监控统计阻塞脚本信息

        数据库产生阻塞(Blocking)的本质原因 :SQL语句连续持有锁的时间过长 ,数目过多, 粒度过大.阻塞是事务隔离带来的副作用,它是不可避免的,而且是一个数据库系统常见的现象. 但是阻塞的 ...

  5. 使用ttXactAdmin、ttSQLCmdCacheInfo、ttSQLCmdQueryPlan获取SQL相关具体信息[TimesTen运维]

    使用ttXactAdmin.ttSQLCmdCacheInfo.ttSQLCmdQueryPlan获取SQL相关具体信息,适合于tt11以上版本号. $ ttversion TimesTen Rele ...

  6. SQL Server 获取服务器信息

    最近做了一个小工具,里面涉及到一些取SQL Server 服务器信息的一些东西,找了好久,找到一个不错的,贴出来分享. 系统函数 SERVERPROPERTY ( propertyname ) 包含要 ...

  7. C# 脚本代码自动登录淘宝获取用户信息

    C# 脚本代码自动登录淘宝获取用户信息   最近遇到的一个需求是如何让程序自动登录淘宝, 获取用户名称等信息. 其实这个利用SS (SpiderStudio的简称) 实现起来非常简单. 十数行代码就可 ...

  8. 通过kfed自动获取磁盘信息的小脚本

    通过kfed自动获取磁盘信息的小脚本 编译KFED [oracle@rac lib]$cd $ORACLE_HOME/rdbms/lib [oracle@rac lib]$ pwd /u01/app/ ...

  9. linux通过脚本获取内存信息

    1 原理 脚本中通过执行free获取内存信息,然后将文本信息通过“空格”分隔符分割成字符串数组将不同信息提取出来,最后通过bc计算出百分比 2 脚本 #!/bin/shHOSTNAME=`hostna ...

随机推荐

  1. django基础之一

    Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Session等诸多功能. ...

  2. 【LeetCode】128. 最长连续序列

    题目 给定一个未排序的整数数组,找出最长连续序列的长度. 要求算法的时间复杂度为O(n). 示例: 输入:[100, 4, 200, 1, 3, 2] 输出:4 解释:最长连续序列是[1, 2, 3, ...

  3. Hadoop集群搭建中时间同步步骤

        一.设置主节点时间服务器的时区     二.在每一个节点上检查是否安装时间服务ntp     三.在主节点上配置时间同步的相关文件     四.在其他从节点上配置与主节点时间同步的脚本 一.设 ...

  4. 跨站脚本攻击(xss)理解

    一  概念 攻击者不直接攻击受害者,而是利用受害者登陆的网站中的漏洞,对受害者进行攻击. 二  危害 由于js本身的限制,并不能直接对用户的电脑造成侵害,但是可以: 1. 获取用户的storage,c ...

  5. 网络Socket编程UDP协议例子

    服务端代码 public class UDPChatServer { //通讯端口 private Integer port=8000; //数据报文的通讯通道对象 private DatagramC ...

  6. 浏览器中F5和CTRL F5的行为区别及如何强制更新资源

    一.浏览器中F5和CTRL F5的行为区别 我们直接来看效果,下面是我打开qq网页,分别使用F5和CTRL F5,我们来看区别. F5: CTRL F5: 区别: 首先直观上的区别是CTRL F5明显 ...

  7. StreamSets学习系列之启动StreamSets时出现Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "test.to.ensure.security.is.configured.correctly" "read")错误的解决办法

    不多说,直接上干货! 问题详情 [hadoop@master streamsets-datacollector-]$ ./bin/streamsets dc Java 1.8 detected; ad ...

  8. linux解压zip乱码解决方案

    1.向系统添加windows下的字符编码: sudo vim  /var/lib/locales/supported.d/local 添加一下编码: zh_CN.GBK GBK zh_CN.GB231 ...

  9. MYSQL中常用的强制性操作(例如强制索引)

    mysql常用的hint 对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的hint功能.下面介绍一些常用的 ...

  10. php里input数组的应用

    一般我们使用input传递表单数据时,可以使用<input name="xxx[]" value="1"><input name=" ...