¿Cómo encontrar las consultas de peor rendimiento en SQL Server 2008?¿Cómo encontrar las consultas de peor rendimiento en SQL Server 2008?
me encontré con el siguiente ejemplo, pero no parece funcionar:
SELECT TOP 5 obj.name, max_logical_reads, max_elapsed_time
FROM sys.dm_exec_query_stats a
CROSS APPLY sys.dm_exec_sql_text(sql_handle) hnd
INNER JOIN sys.sysobjects obj on hnd.objectid = obj.id
ORDER BY max_logical_reads DESC
Tomado de:
http://www.sqlservercurry.com/2010/03/top-5-costly-stored-procedures-in-sql.html
+1 funciona bastante bien para mí.Parece que hay algunos duplicados en las filas devueltas, pero se ve a la derecha :) –
duplicados en las filas podrían ser versiones anteriores de los planes de consulta que se han invalidado (variedad de razones, el cambio de estadísticas es común) El plan no se expulsa desde la memoria en la invalidación para que aparezcan. Otra razón será la parametrización (o más bien la falta de), lo que significa que muchas consultas similares con diferentes parámetros pueden estar en la memoria caché, ocurre con procedimientos ad-hoc SQL no almacenados, pero parece que hay muchos duplicados cuando no lo es. – Andrew
@KM: la intención de agregar una ligera respuesta alternativa, ¿qué hay de unirse a sys.dm_exec_query_plan y extraer el plan de consulta? Siempre vale la pena extraer de la memoria caché con el peor rendimiento. – Andrew