¿Se están actualizando las estadísticas de tus índices?

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

Published 30/3/2007 17:17 por Rodrigo Corral
Archivado en:
Comparte este post:
http://geeks.ms/blogs/rcorral/archive/2007/03/30/se-est-n-actulizando-las-estad-sticas-de-tus-ndices.aspx

Comentarios

# re: ¿Se están actualizando las estadísticas de tus índices?

stats.no_recompute == 1 por stats.no_recompute = 1

mucho C# :)

Sunday, April 01, 2007 11:12 PM por Daniel

# re: ¿Se están actualizando las estadísticas de tus índices?

Ya está corregido, gracias por avisar. Efectivamente mucho C* ;)

Monday, April 02, 2007 9:41 AM por Rodrigo Corral