Hoy he vivido la curiosa situación de que una consulta estaba tardando muchísimo tiempo en ejecutarse debido a que, por error u omisión, se habia desactivado la opción de actualizar automáticamente las estadísticas de un índice. Lo habitual es dejar esta opción activada, aunque a veces puede tener sentido actualizar las estadísticas ‘a mano’, ejecutando sp_updatestats o mediante un plan de mantenimiento cuando la base de datos no tenga carga.
Os dejo un script que detecta que índices no tiene la actualización automatica y cuando fue la última vez que se actualizaron. Si hace mucho que un índice actualizó sus estadísticas, es interesante hacer un sp_updatestas sobre ese índice.
— Proprociona todos los índices que están en
— tablas de usuario si actualizan o no automáticamente
— sus estadisticas, además de la fecha de ultima actualización
SELECT
object_name(indexes.object_id) AS table_name,
indexes.name AS index_name,
STATS_DATE(indexes.object_id, indexes.index_id) AS last_update_date
FROM
sys.indexes as indexes
INNER JOIN
sys.stats AS stats ON
indexes.object_id = stats.object_id
AND indexes.name = stats.name
WHERE
OBJECTPROPERTY(indexes.object_id, N‘IsUserTable’) = 1 AND
stats.no_recompute = 1
ORDER BY
STATS_DATE(indexes.object_id, indexes.index_id) ASC
stats.no_recompute == 1 por stats.no_recompute = 1
mucho C# 🙂
Ya está corregido, gracias por avisar. Efectivamente mucho C* 😉