SQLSERVER中得到执行计划的两种方式

得到执行计划的方式有两种:

1、一种是在指令的前面打开一些开关,让执行计划信息打在结果集里,这种方法比较适合在一个测试环境里对单个语句调优。

这些开关最常用的有

复制代码 代码如下:

SET SHOWPLAN_ALL ON

SET SHOWPLAN_ALL ON --(是不是reuse了一个执行计划,SQSERVERL有没有觉得缺少索引),只能在XML的输出里看到

SET STATISTICS PROFILE ON

还有如果使用SSMS的话,可以用快捷键:Ctrl+L 小写L 他会执行你的语句并显示执行计划,但是不会返回结果集

 

2、另一种方法是使用SQL Trace里的事件跟踪来跟踪语句的执行计划。

常用的事件有 :SHOWPLAN ALL、SHOWPLAN STATISTICS PROFILE、SHOWPLAN XML STATISTICS PROFILE

这种方法的好处是无须打开任何开关,可以用来直接跟踪应用程序的语句执行。

缺点是他会把所有语句都抓下来。如果SQLSERVER比较忙的话,输出会很大,有可能影响性能,所以要慎用

--------------------------------------------------------------------------------

这两种方法收集的信息大部分是一样的。XML的方式会将结果以XML的结构返回,在SQL Trace里,这种结果可以用图形的方式显示执行计划以及其相关的信息。

对执行计划比较简单的语句,这样的输出方式可能比较友善。但是对于复杂的执行计划,如果用图形的方式显示,一个屏幕很难全放得下, 每一步的统计信息要鼠标点到才会显示出来,个人觉得不如文本输出格式易读性好。

时间: 2024-09-20 21:39:55

SQLSERVER中得到执行计划的两种方式的相关文章

SQLSERVER中得到执行计划的两种方式_MsSql

得到执行计划的方式有两种: 1.一种是在指令的前面打开一些开关,让执行计划信息打在结果集里,这种方法比较适合在一个测试环境里对单个语句调优. 这些开关最常用的有 复制代码 代码如下: SET SHOWPLAN_ALL ON SET SHOWPLAN_ALL ON --(是不是reuse了一个执行计划,SQSERVERL有没有觉得缺少索引),只能在XML的输出里看到 SET STATISTICS PROFILE ON 还有如果使用SSMS的话,可以用快捷键:Ctrl+L 小写L 他会执行你的语句并

SQLServer中的执行计划缓存由于长时间缓存对性能造成的干扰

原文:SQLServer中的执行计划缓存由于长时间缓存对性能造成的干扰   本文出处:http://www.cnblogs.com/wy123/p/7190785.html  (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他)   先抛出一个性能问题,前几天遇到一个生产环境性能极其低下的存储过程,开发人员根据具体的业务逻辑和返回的数据量,猜测到这个存储过程的执行应该不会有这么慢.当时意识到可能是执行计划缓存的问题,因为当

Oracle中获取执行计划的几种方法分析

以下是对Oracle中获取执行计划的几种方法进行了详细的分析介绍,需要的朋友可以参考下   1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下: explain plan for SQL语句然后,在计划表中查询刚刚生成的执行计划,语句如下: select * from table(

用excel高级筛选中选择不重复记录两种方式的差异图解

  excel中高级筛选中选择不重复记录两种方式的差异 高级筛选分为两种方式 在原有区域显示筛选结果 将筛选结果复制到其他位置 在原有区域显示筛选结果被筛选掉的行只是被隐藏了 第二种方式 将筛选结果复制到其他位置 被筛选掉的行已经是被删除的 选中数据区域 观察这个数据区域中有两个行是有重复的 并且分别出现过两次 而且是挨着的 鼠标点按a1单元格 拖动鼠标到e25单元格 松开鼠标 点击菜单栏 数据 筛选 高级筛选命令 在弹出的高级筛选对话框的方式 选择为将筛选结果复制到其他位置 点击复制位置后面的

ajax中data传参的两种方式分析

本文实例讲述了ajax中data传参的两种方式.分享给大家供大家参考,具体如下: 1. POST方式: /** * 订单取消 * @return {Boolean} 处理是否成功 */ function orderCancel(orderId, commant){ var flag = false; $.ajax({ type: "POST", url: "../order/orderCancel.action", //orderModifyStatus data:

ajax中data传参的两种方式分析_AJAX相关

本文实例讲述了ajax中data传参的两种方式.分享给大家供大家参考,具体如下: 1. POST方式: /** * 订单取消 * @return {Boolean} 处理是否成功 */ function orderCancel(orderId, commant){ var flag = false; $.ajax({ type: "POST", url: "../order/orderCancel.action", //orderModifyStatus data:

Oracle中获取执行计划的几种方法

1. 预估执行计划 - Explain Plan Explain plan以SQL语句作为输入,得到这条 SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语 句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下: explain plan for SQL语句 然后,在计划表中查询刚刚生成的执行计划,语 句如下: select * from table(dbms_xplan.display); 注意:Explain plan 只生成执

Oracle中获取执行计划的几种方法分析_oracle

1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下:explain plan for SQL语句然后,在计划表中查询刚刚生成的执行计划,语句如下:select * from table(dbms_xplan.display);注意:Explain plan只生成执行计划,并不会真正

获得数据库连接池中数据连接资源的两种方式

相比于从数据库中直接获取数据库连接,使用数据库连接池的方式可以很大程度的提高数据库连接的效率.因此我们在实际开发中通常会采用数据库连接池的方式获取数据库的连接,在使用完成后这些资源再返还给数据库连接池.下面我们就来看一看常用的数据库连接池的简单的方法. 使用DBCP方式 话不多说,直接上代码.这里仅仅是一个简单的效果呈现,所以只需要打印出一句话即可. package jdbcpool; import java.sql.Connection; import org.apache.commons.d