Cómo encontrar consultas lentas en SQL Server (Query Store y DMVs)
Antes de optimizar hay que medir. Con Query Store y las DMVs identificas exactamente que consultas consumen mas CPU, IO o tiempo.
- 1
Activa Query Store
Query Store guarda historial de consultas y planes. Es la herramienta mas practica desde SQL Server 2016. Actívalo por base de datos.
ALTER DATABASE [MiBase] SET QUERY_STORE = ON (OPERATION_MODE = READ_WRITE); - 2
Encuentra las consultas mas costosas con Query Store
Consulta las vistas del Query Store para ver las consultas por duracion, CPU o lecturas. Tambien las tienes en el reporte grafico en SSMS.
SELECT TOP 20 qt.query_sql_text, rs.avg_duration / 1000.0 AS avg_ms, rs.avg_cpu_time / 1000.0 AS avg_cpu_ms, rs.count_executions FROM sys.query_store_query_text qt JOIN sys.query_store_query q ON qt.query_text_id = q.query_text_id JOIN sys.query_store_plan p ON q.query_id = p.query_id JOIN sys.query_store_runtime_stats rs ON p.plan_id = rs.plan_id ORDER BY rs.avg_duration DESC; - 3
Alternativa sin Query Store: sys.dm_exec_query_stats
Muestra estadisticas de consultas en la cache de planes. Se reinicia al limpiar la cache o reiniciar el servidor, asi que es una foto del momento.
SELECT TOP 20 qs.total_worker_time / qs.execution_count AS avg_cpu, qs.total_elapsed_time / qs.execution_count AS avg_duracion, qs.execution_count, SUBSTRING(st.text, (qs.statement_start_offset/2)+1, 200) AS consulta FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st ORDER BY avg_cpu DESC; - 4
Revisa el plan de ejecucion
El plan te dice donde esta el problema: scans de tabla completa, spills a tempdb, estimaciones erradas o falta de indices. En SSMS activa 'Include Actual Execution Plan' (Ctrl+M).
-- Obten el plan estimado sin ejecutar SET SHOWPLAN_XML ON; GO SELECT * FROM dbo.Ventas WHERE ClienteID = 123; GO SET SHOWPLAN_XML OFF;
// el error común
sys.dm_exec_query_stats solo ve lo que sigue en cache: consultas recientes o con RECOMPILE pueden no aparecer. El plan estimado puede diferir del real por estimaciones de cardinalidad malas. Compara siempre el plan actual (real) cuando puedas.
// cuándo conviene un experto
Interpretar planes de ejecucion y decidir el fix (indice, reescritura, estadisticas, hints) requiere experiencia. En dba.mx hacemos diagnostico de rendimiento con Query Store y planes reales, y entregamos las mejoras con techo cerrado.
Agenda un Escaneo — desde USD $550Esta guía es orientativa y usa comandos de referencia. En producción, adapta a tu versión y prueba en un ambiente seguro primero.