Cuántas veces se han preguntado cuáles son las queries que se presentan como "las más complicadas de resolver" para nuestro motor de base de datos?
Pues aquí les dejo un script que hará este trabajo para uds...
Es muy útil cuando notan problemas de performance y deciden comenzar a "atacarlos".
Es una muy buena práctica dedicarle un tiempo a estudiar y tratar de mejorar al menos las queries más costosas (añadiendo índices, mejorando las estadísticas, cambiando lo lógica de las queries etc)
Este script les devuelve las 10 queries más costosas con datos tomados desde la última modificación del plan de ejecución.
Desde ya, incluye todas las queries que atacan por consola o por medio de un store procedure.
La última columna les da un link que les permite ver el plan de ejecución gráfico.
Cualquier duda estoy a su disposición.
Saludos desde Argentina queridos colegas.
IMPORTANTE --> El nivel de compatibilidad de la BD debe ser 90 o superior.
Detalle:
Lista las 10 queries más costosas de nuestra base de datos
Autor : Gustavo Herrera para Sql Server Para
Todos
SELECT
TOP 10
SUBSTRING(qt.TEXT, (qs.statement_start_offset/2)+1,((CASE qs.statement_end_offset
WHEN -1 THEN DATALENGTH(qt.TEXT)ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)+1) as query,
qs.execution_count as 'cantidad de ejecuciones',
qs.total_logical_reads as 'total_lecturas_lógicas',
qs.total_logical_writes as 'total_escrituras_lógicas',
qs.total_worker_time 'total_CPU_consumida_ms',
qs.total_elapsed_time/1000000/60 'total_mts_consumidos_x_la_ejecución',
qs.max_elapsed_time/1000000/60 'máxima_tardanza_en_la_ejecución_mts',
qp.query_plan 'link_plan_ejecucion'
FROM sys.dm_exec_query_stats qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp
ORDER BY
qs.last_elapsed_time DESC