SQL 优化常用查询

 查询语句执行效率

  SELECT top 100 
  (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'执行次数' 
 ,creation_time N'语句编译时间' 
 ,last_execution_time 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'执行语句' 
 ,qp.query_plan 
 FROM sys.dm_exec_query_stats AS qs
 CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
 CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp 
 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 '%fetch%' 
 ORDER BY total_elapsed_time / execution_count DESC

 

 

查看锁表进程

1 SELECT  request_session_id AS spid ,
2         OBJECT_NAME(resource_associated_entity_id) AS 'table'
3 FROM    sys.dm_tran_locks
4 WHERE   resource_type = 'OBJECT' 

 

杀死进程

 1 KILL [spid] 

 

获得执行详细语句

 1 DBCC INPUTBUFFER(spid) 

 

posted @ 2020-04-20 14:31  虔城墨客  阅读(190)  评论(0编辑  收藏  举报