如何查找性能最差的SQL语句
来源:互联网 发布:淘宝淘气值申请信用卡 编辑:程序博客网 时间:2024/06/05 02:19
--总耗时最长
SELECT TOP 10
total_worker_time / 1000 AS N'总消耗CPU 时间(ms)' ,
execution_count N'运行次数' ,
qs.total_worker_time / qs.execution_count / 1000 AS N'平均消耗CPU 时间(ms)' ,
last_execution_time AS N'最后一次执行时间' ,
max_worker_time / 1000 AS N'最大执行时间(ms)' ,
SUBSTRING(qt.text, qs.statement_start_offset / 2 + 1,
( CASE WHEN qs.statement_end_offset = -1
THEN DATALENGTH(qt.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2 + 1) AS N'使用CPU的语法' ,
qt.text N'完整语法'
FROM sys.dm_exec_query_stats qs WITH ( NOLOCK )
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE execution_count > 1
ORDER BY max_worker_time DESC
--平均耗时最长
SELECT TOP 10
( total_elapsed_time / execution_count ) / 1000 N'平均时间ms' ,
total_elapsed_time / 1000 N'总花费时间ms' ,
total_worker_time / 1000 N'所用的CPU总时间ms' ,
total_physical_reads N'物理读取总次数' ,
total_logical_reads / execution_count N'每次逻辑读次数' ,
total_logical_reads N'逻辑读取总次数' ,
total_logical_writes N'逻辑写入总次数' ,
execution_count N'执行次数' ,
SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,
( ( CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2 ) + 1) N'完整语法' ,
creation_time N'语句编译时间' ,
last_execution_time N'上次执行时间'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,
( ( CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2 ) + 1) NOT LIKE '%tch%'
ORDER BY total_elapsed_time / execution_count DESC
--物理读耗时最长
SELECT TOP 10
qs.total_physical_reads N'物理读取总次数' ,
qs.execution_count N'执行次数' ,
qs.total_physical_reads / qs.execution_count / 1000 AS N'平均时间ms' ,
SUBSTRING(qt.text, qs.statement_start_offset / 2,
( CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2) AS N'完整语法'
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
ORDER BY qs.total_physical_reads DESC
--逻辑读耗时最长
SELECT TOP 10
qs.total_logical_reads N'逻辑读取总次数' ,
qs.execution_count N'执行次数' ,
qs.total_logical_reads / qs.execution_count / 1000 AS N'平均时间ms' ,
SUBSTRING(qt.text, qs.statement_start_offset / 2,
( CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2) AS N'完整语法'
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
ORDER BY qs.total_logical_reads DESC
SELECT TOP 10
total_worker_time / 1000 AS N'总消耗CPU 时间(ms)' ,
execution_count N'运行次数' ,
qs.total_worker_time / qs.execution_count / 1000 AS N'平均消耗CPU 时间(ms)' ,
last_execution_time AS N'最后一次执行时间' ,
max_worker_time / 1000 AS N'最大执行时间(ms)' ,
SUBSTRING(qt.text, qs.statement_start_offset / 2 + 1,
( CASE WHEN qs.statement_end_offset = -1
THEN DATALENGTH(qt.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2 + 1) AS N'使用CPU的语法' ,
qt.text N'完整语法'
FROM sys.dm_exec_query_stats qs WITH ( NOLOCK )
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE execution_count > 1
ORDER BY max_worker_time DESC
--平均耗时最长
SELECT TOP 10
( total_elapsed_time / execution_count ) / 1000 N'平均时间ms' ,
total_elapsed_time / 1000 N'总花费时间ms' ,
total_worker_time / 1000 N'所用的CPU总时间ms' ,
total_physical_reads N'物理读取总次数' ,
total_logical_reads / execution_count N'每次逻辑读次数' ,
total_logical_reads N'逻辑读取总次数' ,
total_logical_writes N'逻辑写入总次数' ,
execution_count N'执行次数' ,
SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,
( ( CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2 ) + 1) N'完整语法' ,
creation_time N'语句编译时间' ,
last_execution_time N'上次执行时间'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
WHERE SUBSTRING(st.text, ( qs.statement_start_offset / 2 ) + 1,
( ( CASE statement_end_offset
WHEN -1 THEN DATALENGTH(st.text)
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2 ) + 1) NOT LIKE '%tch%'
ORDER BY total_elapsed_time / execution_count DESC
--物理读耗时最长
SELECT TOP 10
qs.total_physical_reads N'物理读取总次数' ,
qs.execution_count N'执行次数' ,
qs.total_physical_reads / qs.execution_count / 1000 AS N'平均时间ms' ,
SUBSTRING(qt.text, qs.statement_start_offset / 2,
( CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2) AS N'完整语法'
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
ORDER BY qs.total_physical_reads DESC
--逻辑读耗时最长
SELECT TOP 10
qs.total_logical_reads N'逻辑读取总次数' ,
qs.execution_count N'执行次数' ,
qs.total_logical_reads / qs.execution_count / 1000 AS N'平均时间ms' ,
SUBSTRING(qt.text, qs.statement_start_offset / 2,
( CASE WHEN qs.statement_end_offset = -1
THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset ) / 2) AS N'完整语法'
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt
ORDER BY qs.total_logical_reads DESC
0 0
- 如何查找性能最差的SQL语句
- 如何查找性能最差的SQL语句
- SQL SERVER查询效率最差的SQL语句
- [SQL]postgreSQL中如何查找无主键的sql语句
- 如何查找MySQL中查询慢的SQL语句
- 如何查找MySQL中查询慢的SQL语句
- 如何查找MySQL中查询慢的SQL语句
- 查找SQL执行效率最差的SQL
- 关于SQL语句的性能
- 性能优良的sql语句
- 分析SQL语句的性能
- sql语句的性能优化
- SQL语句的性能查询
- 如何查找MYSQL中查询慢的语句
- Oracle中如何查找与解决SQL语句执行效率(转载)
- PL/SQL最差实践
- PL/SQL最差实践
- PL/SQL最差实践
- Eclipse+ADT+Android SDK 搭建安卓开发环境
- 行人检测(综述1)
- 51nod 最长公共子序列问题
- BZOJ 2067 POI 2004 SZN 树形DP 贪心 二分答案
- mysql数据库如何创建索引
- 如何查找性能最差的SQL语句
- Win10修改编辑hosts文件无法保存怎么办
- Java中策略设计模式
- 了解iOS上的可执行文件和Mach-O格式
- 四种方案解决ScrollView嵌套ListView问题
- 行人检测(综述2)
- 二维数组中的查找
- 开源项目网站推荐
- kindeditor-4.1.7--- 文本编辑器