Andrew Thomas

Developer

CTO

Skier

Blog Post

SQL Query Performance

May 12, 2022 SQL

When our azure databases start getting overloaded it can be quite stressful to see whats happening, and often the temptation is just to scale up. Before we do we always run the below script to see what queries are running and consuming most resources.

SELECT total_worker_time/execution_count AS AvgCPU   
, total_worker_time AS TotalCPU 
, total_elapsed_time/execution_count AS AvgDuration   
, total_elapsed_time AS TotalDuration   
, (total_logical_reads+total_physical_reads)/execution_count AS AvgReads  
, (total_logical_reads+total_physical_reads) AS TotalReads 
, execution_count    
, SUBSTRING(st.TEXT, (qs.statement_start_offset/2)+1   
, ((CASE qs.statement_end_offset  WHEN -1 THEN datalength(st.TEXT)   
ELSE qs.statement_end_offset   
END - qs.statement_start_offset)/2) + 1) AS txt   
, query_plan 
FROM sys.dm_exec_query_stats AS qs   
cross apply sys.dm_exec_sql_text(qs.sql_handle) AS st   
cross apply sys.dm_exec_query_plan (qs.plan_handle) AS qp  
ORDER BY 1 DESC