Cuando se detectan problemas de rendimiento, normalmente nos preguntan desde equipos o departamentos que gestionan aplicaciones que usan nuestras bases de datos: “¿cuándo se han actualizado las estadísticas?”.
Aunque seguramente ya sabes que son las estadísticas, recordamos que son objetos que guardan información sobre la distribución de los valores de las columnas (una o varias) de nuestras tablas o índices, número de filas, etc. Esta información es usada por el optimizador del SQL Server para crear un plan de ejecución o ruta para completar una consulta o query de la forma más óptima.
Con la siguiente query podemos obtener la fecha de la última actualización de tus estadísticas:
SELECT o.name AS object_name, ss.stats_id, ss.name as stat_name,
ss.filter_definition, shr.last_updated,
(shr.rows_sampled * 100)/shr.rows AS sample_percent,
shr.rows, shr.rows_sampled,
shr.steps, shr.unfiltered_rows, shr.modification_counter
FROM sys.stats ss
INNER JOIN sys.objects o
ON o.object_id = ss.object_id
CROSS APPLY sys.dm_db_stats_properties(ss.object_id, ss.stats_id) shr
WHERE o.is_ms_shipped = 0
ORDER BY o.name, ss.stats_id;
En el campo last_update te indica la fecha en la que se actualizó la estadística por última vez.