sql 获取批处理信息的脚本(优化器在处理批处理时所发生的优化器事件)
--获取批处理信息的脚本(优化器在处理批处理时所发生的优化器事件)
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 获取批处理信息的脚本(优化器在处理批处理时所发生的优化器事件)的更多相关文章
- 将SQL获取的信息传递到Email中
将SQL获取的信息传递到Email中 最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台 ...
- SSIS 实例——将SQL获取的信息传递到Email中
最近在为公司财务开发一个邮件通知时遇到了一个技术问题.原来我设计SSIS的是每天将ERP系统支付数据导出到财务支付平台后 Email 通知财务,然后财务到支付平台上进行支付操作.由于那个时候开发时间很 ...
- linux下获取服务器硬件信息的脚本
这是个简单的脚本,便于查询服务器的硬件信息: #!/bin/bash # # Description: # Used to get the hardware config information. # ...
- SQL Server 监控统计阻塞脚本信息
数据库产生阻塞(Blocking)的本质原因 :SQL语句连续持有锁的时间过长 ,数目过多, 粒度过大.阻塞是事务隔离带来的副作用,它是不可避免的,而且是一个数据库系统常见的现象. 但是阻塞的 ...
- 使用ttXactAdmin、ttSQLCmdCacheInfo、ttSQLCmdQueryPlan获取SQL相关具体信息[TimesTen运维]
使用ttXactAdmin.ttSQLCmdCacheInfo.ttSQLCmdQueryPlan获取SQL相关具体信息,适合于tt11以上版本号. $ ttversion TimesTen Rele ...
- SQL Server 获取服务器信息
最近做了一个小工具,里面涉及到一些取SQL Server 服务器信息的一些东西,找了好久,找到一个不错的,贴出来分享. 系统函数 SERVERPROPERTY ( propertyname ) 包含要 ...
- C# 脚本代码自动登录淘宝获取用户信息
C# 脚本代码自动登录淘宝获取用户信息 最近遇到的一个需求是如何让程序自动登录淘宝, 获取用户名称等信息. 其实这个利用SS (SpiderStudio的简称) 实现起来非常简单. 十数行代码就可 ...
- 通过kfed自动获取磁盘信息的小脚本
通过kfed自动获取磁盘信息的小脚本 编译KFED [oracle@rac lib]$cd $ORACLE_HOME/rdbms/lib [oracle@rac lib]$ pwd /u01/app/ ...
- linux通过脚本获取内存信息
1 原理 脚本中通过执行free获取内存信息,然后将文本信息通过“空格”分隔符分割成字符串数组将不同信息提取出来,最后通过bc计算出百分比 2 脚本 #!/bin/shHOSTNAME=`hostna ...
随机推荐
- postgresql-查看各个数据库大小
查看各个数据库表大小(不包含索引),以及表数据量 mysql: select table_name,concat(round((DATA_LENGTH/1024/1024),2),'M')as siz ...
- 学习推荐-Redis学习手册
redis之旅: http://www.cnblogs.com/stephen-liu74/archive/2012/02/27/2370212.html
- 监督学习——AdaBoost元算法提高分类性能
基于数据的多重抽样的分类器 可以将不通的分类器组合起来,这种组合结果被称为集成方法(ensemble method)或者元算法(meta-algorithom) bagging : 基于数据随机抽样的 ...
- list、vector、deque互相拷贝
#include <iostream> #include <stdlib.h> #include <string.h> #include <algorithm ...
- python垃圾回收
python垃圾回收 python垃圾回收主要使用引用计数来跟踪和回收垃圾.在引用计数的基础上,通过“标记—清除”解决容器对象可能产生的循环引用问题,通过“分代回收”以空间换时间的方法提高垃圾回收效率 ...
- error C4996: 'scanf': This function or variable may be unsafe.
项目属性-配置属性-c/c++-预处理器- 在下面的编辑窗口中添加一句命令:_CRT_SECURE_NO_WARNINGS 添加完成后应用并退出 http://jingyan.baidu.com/al ...
- JavaScript -- Document-Element
-----046-Document-Element.html----- <!DOCTYPE html> <html> <head> <meta http-eq ...
- css outline实践研究
outline具有和border很相似的属性,但多少又有些区别,就是因为这些区别才让它闪闪发光,先目睹一下. <style> div{ width:100px; height:100px; ...
- [Python]可变类型,默认参数与学弟的困惑
一.学弟的困惑 十天前一个夜阑人静.月明星稀的夜晚,我和我的朋友们正在学校东门的小餐馆里吃着方圆3里内最美味的牛蛙,唱着最好听的歌儿,畅聊人生的意义.突然,我的手机一震,气氛瞬间就安静下来,看着牛蛙碗 ...
- mysql cmd 启动服务
1.确定你的mysql 是否能正常工作登录数据库cmd--“命令提示字符”窗口录入,录入cd C:\mysql\bin 并按下回车键,将目录切换为 cd C:\mysql\bin再键入命令mysql ...