[sqlserver脚本]查看指定SQL语句生成了哪些执行计划
参考SQL技术内幕写了一段脚本,可以通过这段脚本查看执行指定SQL语句后,系统生成了哪些执行计划.使用时注意以下几点:
- 修改
use MyTest
,换成自己的数据库名字. - 将
exec sp_page_test TestTable','*','id',20,100,0,'1=1'
替换成要测试的SQL语句 - 该脚本只支持Sql Server 2005及以上版本
set nocount on;
use MyTest; --这里使用你自己的数据库
dbcc freeproccache;--清空过程缓存
go
--用tempdb..optstats表来捕获所执行SQL语句生成的执行计划信息
if(OBJECT_ID('tempdb..optstats') is not null)
drop table tempdb..optstats;
go
--这条语句用于创建临时表 tempdb..optstats
select *,0 as run
into tempdb..optstats
from sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle)
go
--该语句的计划将被保存到过程缓存
--这样当下一次执行时不会产生任何优化器事件.
--后面的GO用于确保下次执行这段脚本时
--可以重用insert的计划
go
insert into tempdb..optstats
select *,1 as run
from sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle)
go
--原因同上,只是用"2"替换"1"
--这样我们将得到不同的计划.
go
insert into tempdb..optstats
select *,2 as run
from sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle)
go
--清空临时表
truncate table tempdb..optstats
go
--存储"运行前的"信息,
--保存到临时表,run列的值为"1"
go
insert into tempdb..optstats
select *,1 as run
from sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle)
go
--在这里执行你自己的语句或批处理
--/*** 下面是一个示例
go
exec sp_page_test 'TestTable','*','id',20,100,0,'1=1'
go
--***/
go
--存储"运行后的"信息,
--保存到临时表,RUN列的值为"2"
go
insert into tempdb..optstats
select *,2 as run
from sys.dm_exec_cached_plans cp
CROSS APPLY sys.dm_exec_sql_text(cp.plan_handle)
go
--从临时表中提取出run1和run2之间
--执行所测试SQL语句后生成的执行计划
select * from tempdb..optstats where bucketid in(
select tt.bucketid from (
select bucketid,COUNT(*) as cc from tempdb..optstats group by bucketid ) tt where tt.cc=1
)
go
--删除临时表
Drop table tempdb..optstats;
go
set nocount off
[sqlserver脚本]查看指定SQL语句生成了哪些执行计划的更多相关文章
- SqlServer 中如何查看某一个Sql语句是复用了执行计划,还是重新生成了执行计划
我们知道SqlServer的查询优化器会将所执行的Sql语句的执行计划作缓存,如果后续查询可以复用缓存中的执行计划,那么SqlServer就会为后续查询复用执行计划而不是重新生成一个新的执行计划,因为 ...
- SQLSERVER图片查看工具SQL Image Viewer5.5.0.156
原文:SQLSERVER图片查看工具SQL Image Viewer5.5.0.156 SQLSERVER图片查看工具SQL Image Viewer5.5.0.156 在2013年某一次北京SQL ...
- 在线数据库表(sql语句)生成java实体类工具
相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设 ...
- Access、SQLServer、Oracle常见SQL语句应用区别
Access.SQLServer.Oracle常见SQL语句应用区别 关劲松 PMP 如果要兼容Access.SQL Server.Oracle三个数据库版本:我们在编写SQL语句的过程中,尽量使用一 ...
- 查看慢sql语句
查看慢sql语句 st.text AS SQL_Full --父级完整语句 ,) , ((CASE statement_end_offset THEN DATALENGTH(st.text) ELSE ...
- PowerDesigner通过SQL语句生成PDM文件并将name和comment进行互相转换
本篇文章主要介绍了PowerDesigner通过SQL语句生成PDM文件并将name和comment进行互相转换 超详细过程(图文),具有一定的参考价值,感兴趣的小伙伴们可以参考一下 1.软件准备 软 ...
- oracle 查看并行sql语句的并行数量和如何开并行
1.执行sql:select /*+ parallel(a,4) */ * from tf_f_user a where rownum<100000; 2.如何查看该sql语句的并行数量: se ...
- SQL语句到底是怎么执行的
写在前面的话:有时不理解SQL语句各个部分执行顺序,导致理解上出现偏差,或者是书写SQL语句时随心所欲,所以有必要了解一下sql语句的执行顺序.可以有时间自己写一个简单的数据库,理解会更加深入.下面就 ...
- 普通SQL语句可以用Exec执行
例如存储过名为:myprocedure use AdventureWorks create procedure myprocedure @city varchar(20) as begin selec ...
随机推荐
- ARM上电启动及Uboot代码分析
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/qianlong4526888/article/details/27698707 注意:由于文档是去年 ...
- WebService—CXF—实现接口发布和客户端调用
(一)接口发布的几种方式 定义接口: @WebService(targetNamespace="http://www.itfad.net/queryUser") public in ...
- poj3608 Bridge Across Islands
地址:http://poj.org/problem?id=3608 题目: Bridge Across Islands Time Limit: 1000MS Memory Limit: 65536 ...
- 推荐一个js脚本的字体拟合模型
推荐一个js脚本的字体拟合模型 http://r3mi.github.io/poly2tri.js/ 推荐一个js脚本的字体拟合模型 http://r3mi.github.io/poly2tri. ...
- STM32示波器 信号发生器
源: STM32示波器 信号发生器
- SQL学习笔记四(补充-2)之MySQL多表查询
阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 准备表 #建表 create table depart ...
- bzoj3751 / P2312 解方程
P2312 解方程 bzoj3751(数据加强) 暴力的一题 数据范围:$\left | a_{i} \right |<=10^{10000}$.连高精都无法解决. 然鹅面对这种题,有一种常规套 ...
- 20145307陈俊达《网络对抗》Exp2 后门原理与实践
20145307陈俊达<网络对抗>Exp2 后门原理与实践 基础问题回答 例举你能想到的一个后门进入到你系统中的可能方式? 非正规网站下载的软件 脚本 或者游戏中附加的第三方插件 例举你知 ...
- 20145314郑凯杰《网络对抗技术》实验5 MSF基础应用
20145314郑凯杰<网络对抗技术>实验5 MSF基础应用 1.0 MS08_067安全漏洞 1.1 实验目标 了解掌握metasploit平台的一些基本操作,能学会利用已知信息完成简单 ...
- Linux内核分析
通过分析汇编代码理解计算机是如何工作的 网易云课堂<Linux内核分析>作业 实验目的: 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 实验过程: 登陆实验楼虚拟机h ...