原文地址: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. Mysql phpStudy升级Mysql版本,流产了怎么办?

    网上有一些phpStudy升级mysql的方法,如: https://www.cnblogs.com/GreenForestQuan/p/6496431.html 很不错,我的电脑一次成功,但是同事的 ...

  2. Java框架部分---面试题

    说说Spring? Spring的核心是控制反转.依赖注入,Aop(面向切面)相当于把每个bean与bean之间的关系交给第 三方容器进行管理. 说SpringIOC.SpringAOP? Sprin ...

  3. JavaWeb基础-servlet

    Servlet简介 Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤: 1.编写一个Java类,实现s ...

  4. web roadmap

  5. L330 Black hole picture captured for first time in space ‘breakthrough’

    Black hole picture captured for first time in space ‘breakthrough’ Astronomers have captured the fir ...

  6. mysql-5.7.23-winx64.zip安装教程

    请参考这篇文章:https://www.jianshu.com/p/94647c0c98c4

  7. C# 时间控件 竖直进度条 饼图显示 仪表盘 按钮基础控件库

    Prepare 本文将使用一个NuGet公开的组件来实现一些特殊的控件显示,方便大家进行快速的开发系统. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台 ...

  8. ARP【地址解析协议】理解

    今天是来公司的第二个周一,早上收到Boss抄送的邮件说网段之间无法通信,心想现在还不太懂这个原理,于是就在网络上搜罗了一下资料,作此整理(大部分文字内容来自网络) 1. 同网段和不同网段设备通信原理详 ...

  9. 机器视觉:SSD Single Shot MultiBox Detector

    今天介绍目标检测中非常著名的一个框架 SSD,与之前的 R-CNN 系列的不同,而且速度比 YOLO 更快. SSD 的核心思想是将不同尺度的 feature map 分成很多固定大小的 box,然后 ...

  10. 【转载】 强化学习(十一) Prioritized Replay DQN

    原文地址: https://www.cnblogs.com/pinard/p/9797695.html ------------------------------------------------ ...