SQL Server: Cómo regenerar las estadísticas

Es importante actualizar las estadísticas de nuestra base de datos periódicamente. Esta periodicidad va a depender siempre de el uso que se le haya dado al a base de datos desde la última vez que se actualizaron las estadísticas.

Sin unas estadísticas actualizadas podemos encontrarnos que la misma consulta va lenta en dos bases de datos muy parecidas. Esto se debe a que el plan de ejecución que se genera no es óptimo debido a que la información sobre las estadísticas de bases de datos está obsoleta.

Cosas a tener en cuenta:

  • Podemos crear un SQL JOB que actualice la estadísticas cada cierto tiempo.
  • La actualización de estadísticas consume ciclos de reloj y ralentizará el acceso a la base de datos mientras se realiza. Por eso es recomendable ejecutarlo de noche a partir de una hora de forma automática, por ejemplo con el comando WAITFOR.
  • Si la base de datos  a cambiado mucho siempre podemos hacer un FULLSCAN. Aunque, no siempre es necesario ni recomendable hacer un escaneo completo.

En el siguiente ejemplo esperamos a las 12 de la noche para ejecutar un Full Scan en todas las tablas de la base de datos:

--Start at 00:00 hours
WAITFOR TIME '00:00'
--Do a fullscan in every table
EXEC sp_MSforeachtable 'UPDATE STATISTICS ? WITH FULLSCAN'

Que disfrutéis de vuestras consultas más rápidas y optimizadas 🙂

También te podría gustar...

Deja un comentario

Tu dirección de correo electrónico no será publicada.