【工作笔记0032】sqlserver慢sql查询

慢sql查询:

SELECT TOP 100 * FROM (
	SELECT
		(total_elapsed_time / execution_count)/1000 平均时间ms,
		total_elapsed_time/1000 总花费时间ms,
		total_worker_time/1000 所用的CPU总时间ms,
		total_physical_reads 物理读取总次数,
		total_logical_reads/execution_count 每次逻辑读次数,
		total_logical_reads 逻辑读取总次数,
		total_logical_writes 逻辑写入总次数,
		execution_count 执行次数,
		SUBSTRING(dest.text, (deqs.statement_start_offset/2) + 1,
				((
						CASE
								statement_end_offset 
								WHEN - 1 THEN
								DATALENGTH( dest.text ) ELSE deqs.statement_end_offset 
							END - deqs.statement_start_offset 
				) / 2) + 1 
		)  执行语句,
		creation_time 语句编译时间,
		last_execution_time 上次执行时间
	FROM sys.dm_exec_query_stats AS deqs CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) dest
) tt
WHERE 执行语句 not like '%fetch%'
AND 上次执行时间 > '2021-4-7 18:19:03' AND 上次执行时间 < '2021-4-8 18:19:14'
ORDER BY 平均时间ms DESC;

指定时间内的sql执行情况查询:

select * from (
	SELECT TOP 100 		
		deqs.creation_time, --创建时间 		
		SUBSTRING(dest.text,(deqs.statement_start_offset/2)+1, 
		((CASE deqs.statement_end_offset WHEN -1 THEN DATALENGTH(dest.text) 
		ELSE deqs.statement_end_offset END - deqs.statement_start_offset)/2) + 1 
		) AS statement_text, --sql语句 		
		dest.text, 
		--执行时间
		deqs.total_worker_time, 
		deqs.last_worker_time, 
		deqs.max_worker_time, 
		deqs.min_worker_time 
	FROM sys.dm_exec_query_stats deqs 	
	CROSS APPLY 
		sys.dm_exec_sql_text(deqs.sql_handle) dest 
	WHERE 
		deqs.creation_time BETWEEN '2021-4-8 16:56:36' AND '2021-4-8 17:56:48'  
		--AND dest.text LIKE '%%' 
	ORDER BY 
		deqs.creation_time DESC
) t

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值