原文地址:https://www.cnblogs.com/My-Dream/p/6270308.html

1.找出执行时间最长的10条SQL(适用于SQL SERVER 2005及其以上版本)

  1. SELECT top 10
  2. (total_elapsed_time / execution_count)/1000 N'平均时间ms'
  3. ,total_elapsed_time/1000 N'总花费时间ms'
  4. ,total_worker_time/1000 N'所用的CPU总时间ms'
  5. ,total_physical_reads N'物理读取总次数'
  6. ,total_logical_reads/execution_count N'每次逻辑读次数'
  7. ,total_logical_reads N'逻辑读取总次数'
  8. ,total_logical_writes N'逻辑写入总次数'
  9. ,execution_count N'执行次数'
  10. ,creation_time N'语句编译时间'
  11. ,last_execution_time N'上次执行时间'
  12. ,SUBSTRING(
  13. st.text,
  14. (qs.statement_start_offset/2) + 1,
  15. (
  16. (CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2
  17. ) + 1
  18. ) N'执行语句'
  19. ,qp.query_plan
  20. FROM sys.dm_exec_query_stats AS qs
  21. CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
  22. CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
  23. WHERE
  24. SUBSTRING(
  25. st.text,
  26. (qs.statement_start_offset/2) + 1,
  27. (
  28. (CASE statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset)/2
  29. ) + 1
  30. ) not like '%fetch%'
  31. ORDER BY total_elapsed_time / execution_count DESC;
  32.  
  33. 如果想对SQL作筛选,可将
  34. not like '%fetch%' 换成 like '%user%'就可以找出SQL语句中含有user关键字的SQL

2 找出执行最慢的SQL语句(适用于SQL SERVER 2005及其以上版本)

  1. SELECT
  2. (total_elapsed_time / execution_count)/1000 N'平均时间ms'
  3. ,total_elapsed_time/1000 N'总花费时间ms'
  4. ,total_worker_time/1000 N'所用的CPU总时间ms'
  5. ,total_physical_reads N'物理读取总次数'
  6. ,total_logical_reads/execution_count N'每次逻辑读次数'
  7. ,total_logical_reads N'逻辑读取总次数'
  8. ,total_logical_writes N'逻辑写入总次数'
  9. ,execution_count N'执行次数'
  10. ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1
  11. ,((CASE statement_end_offset
  12. WHEN -1 THEN DATALENGTH(st.text)
  13. ELSE qs.statement_end_offset END
  14. - qs.statement_start_offset)/2) + 1) N'执行语句'
  15. ,creation_time N'语句编译时间'
  16. ,last_execution_time N'上次执行时间'
  17. FROM
  18. sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
  19. WHERE
  20. SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
  21. ((CASE statement_end_offset
  22. WHEN -1 THEN DATALENGTH(st.text)
  23. ELSE qs.statement_end_offset END
  24. - qs.statement_start_offset)/2) + 1) not like '�tch%'
  25. ORDER BY
  26. total_elapsed_time / execution_count DESC;

3 找出最耗时的前N条T-SQL语句  (适用于SQL SERVER 2005及其以上版本)

  1. --给N赋初值为30
  2. declare @n int set @n=30
  3.  
  4. ;with maco as
  5. (
  6. select top (@n)
  7. plan_handle,
  8. sum(total_worker_time) as total_worker_time ,
  9. sum(execution_count) as execution_count ,
  10. count(1) as sql_count
  11. from sys.dm_exec_query_stats group by plan_handle
  12. order by sum(total_worker_time) desc
  13. )
  14. select t.text ,
  15. a.total_worker_time ,
  16. a.execution_count ,
  17. a.sql_count
  18. from maco a
  19. cross apply sys.dm_exec_sql_text(plan_handle) t
  20.  
  21. /* 结果格式如下
  22. text total_worker_time execution_count sql_count
  23. -------- ------------------ ----------------- ---------
  24. 内容略
  25. */

 4 平均耗CPU最多的前个SQL (SQL SERVER 2005以上版本)

  1. SELECT TOP 5 total_worker_time / execution_count AS [Avg CPU Time],
  2. SUBSTRING(st.text, (qs.statement_start_offset/2)+1,
  3. ((CASE qs.statement_end_offset
  4. WHEN -1 THEN DATALENGTH(st.text)
  5. ELSE qs.statement_end_offset
  6. END - qs.statement_start_offset)/2) + 1) AS statement_text
  7. FROM sys.dm_exec_query_stats AS qs
  8. CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
  9. ORDER BY total_worker_time/execution_count DESC

5 平均耗CPU最多的前个SQL  (SQL SERVER 2008或以上版本)

  1. SELECT TOP 20
  2. total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],
  3. qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],
  4. last_execution_time AS [最后一次执行时间],min_worker_time /1000 AS [最小执行时间(ms)],
  5. max_worker_time /1000 AS [最大执行时间(ms)],
  6. SUBSTRING(qt.text,qs.statement_start_offset/2+1,
  7. (CASE WHEN qs.statement_end_offset = -1
  8. THEN DATALENGTH(qt.text)
  9. ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
  10. AS [使用CPU的语法], qt.text [完整语法],
  11. qt.dbid, dbname=db_name(qt.dbid),
  12. qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
  13. FROM sys.dm_exec_query_stats qs WITH(nolock)
  14. CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
  15. WHERE execution_count>1
  16. ORDER BY (qs.total_worker_time/qs.execution_count/1000) DESC

6 总耗CPU最多的前个SQL (SQL SERVER 2008以上版本)

  1. SELECT TOP 20
  2. total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],
  3. qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],
  4. last_execution_time AS [最后一次执行时间],max_worker_time /1000 AS [最大执行时间(ms)],
  5. SUBSTRING(qt.text,qs.statement_start_offset/2+1,
  6. (CASE WHEN qs.statement_end_offset = -1
  7. THEN DATALENGTH(qt.text)
  8. ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
  9. AS [使用CPU的语法], qt.text [完整语法],
  10. qt.dbid, dbname=db_name(qt.dbid),
  11. qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
  12. FROM sys.dm_exec_query_stats qs WITH(nolock)
  13. CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
  14. WHERE execution_count>1
  15. ORDER BY total_worker_time DESC

(转)查看SQLServer最耗资源时间的SQL语句的更多相关文章

  1. 查看SQLServer最耗资源时间的SQL语句

    执行最慢的SQL语句 SELECT (total_elapsed_time / execution_count)/1000 N'平均时间ms' ,total_elapsed_time/1000 N'总 ...

  2. SQLServer最耗资源时间的SQL语句

    作者kolachen http://blog.sina.com.cn/s/blog_63f3e0060102vcm0.html 先拷过来了,等有空再研究一下 执行最慢的SQL语句 SELECT (to ...

  3. log4j向oracle中插入一条系统当前时间的sql语句

    配置log4j,要向oracle插入一条系统当前时间的sql语句,按网上查找的总是出现各种各样的报错,最后总结出的写法是: ### shezhi### log4j.rootLogger = debug ...

  4. 获取SQLServer的最完整数据字典的SQL语句

    原文:获取SQLServer的最完整数据字典的SQL语句 原创于2008年06月18日,2009年10月18日迁移至此. 获取SQLServer 的最完整数据字典的SQL 语句   其实网上已经流传了 ...

  5. 浅析SqlServer简单参数化模式下对sql语句自动参数化处理以及执行计划重用

    我们知道,SqlServer执行sql语句的时候,有一步是对sql进行编译以生成执行计划, 在生成执行计划之前会去缓存中查找执行计划 如果执行计划缓存中有对应的执行计划缓存,那么SqlServer就会 ...

  6. MyBatis源码分析-SQL语句执行的完整流程

    MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简 ...

  7. ORACLE 查看有多个执行计划的SQL语句

    在SQL优化过程,有时候需要查看哪些SQL具有多个执行计划(Multiple Executions Plans for the same SQL statement),因为同一个SQL有多个执行计划一 ...

  8. Oracle数据库更新时间的SQL语句

    ---Oracle数据库更新时间字段数据时的sql语句---格式化时间插入update t_user u set u.name='pipi',u.modifytime=to_date('2015-10 ...

  9. Oracle、DB2、SQLSERVER、Mysql、Access分页SQL语句梳理

    最近把平时在项目中常用到的数据库分页sql总结了下.大家可以贴出分页更高效的sql语句.sqlserver分页 第一种分页方法 需用到的参数: pageSize 每页显示多少条数据 pageNumbe ...

随机推荐

  1. js如何在浏览器添加cookie(添加、获取、删除)

    首先,简单用js将cookie保存到浏览器中,具体可按F12在这里查看(火狐浏览器) 1.js脚本方法 1)添加cookie方法 //添加cookie var addCookie = function ...

  2. Linux中的#和$区别

    [#]代表 root权限[$]代表普通用户

  3. EasyExcel导入工具(SpringMVC下使用)

    easyExcel:由阿里巴巴公司开发,由github托管 github上有详细使用文档 github地址:https://github.com/alibaba/easyexcel/blob/mast ...

  4. Python开发【项目】:学员管理系统(mysql)

    需求: 用户角色,讲师\学员, 用户登陆后根据角色不同,能做的事情不同,分别如下 讲师视图: 管理班级,可创建班级,根据学员qq号把学员加入班级 可创建指定班级的上课纪录,注意一节上课纪录对应多条学员 ...

  5. HTTP,RFC自学心得

    HTTP协议描述的是:发送方与接收方的通信协议,通过两方的自觉遵守而存在,当然有不少的浏览器并没有百分百遵守这份协议. HTTP是运行于应用层的协议,基于TCP协议而运作.基本上是客户/服务器对答模式 ...

  6. VBA消息框

    MsgBox函数显示一个消息框,并等待用户点击一个按钮,然后根据用户点击该按钮的动作执行. 语法 MsgBox(prompt[,buttons][,title][,helpfile,context]) ...

  7. git不添加.idea等IDE配置文件夹

    git不添加.idea等IDE配置文件夹由于.idea(intellJ,pycharm)的IDE文件夹很常出现,建议将gitignore设置为全局. git config --global core. ...

  8. Scrapy、Scrapy-redis组件

    目录 Scrapy 一.安装 二.基本使用 1. 基本命令 2.项目结构以及爬虫应用简介 3. 小试牛刀 4. 选择器 5. 格式化处理 6.中间件 7. 自定制命令 8. 自定义扩展 9. 避免重复 ...

  9. ggplot2 multiply graphs on one figure

    library(ggplot2)library(grid)grid.newpage()pushViewport(viewport(layout = grid.layout(1,2)))vplayout ...

  10. linux日常命令之三

    一.换行符 linux换行符为\n,而windows换行符为\r\n. 因此,linux的原生文本文件,换行符为\n,而windows为\r\n:将linux文件拷贝至windows,换行符保持不变, ...