La actualización de estadísticas en SQL Server nos permite actualizar las estadísticas de optimización sobre una tabla (o vista indexada), con el objetivo de mejorar los planes de ejecución y, por ende, el rendimiento de la base de datos.
Dependiendo de nuestra necesidad. Podemos actualizar las estadísticas a nivel de: Base de datos, tabla y objeto.
1. Base de datos: Ejecuta lo siguiente para actualizar las estadísticas en la base de datos:
USE AdventureWorks2019;
GO
EXEC sp_updatestats;
Esto aplicará el comando UPDATE STATISTICS sobre todas las tablas de la base de datos actual. El resultado sera parecido a esto:
Updating [sys].[plan_persist_context_settings][plan_persist_context_settings_cidx], update is not necessary…0index(es)/statistic(s) have been updated,1 did not require update. Updating [demoDB].[Schema][PK__Schema__04D490DB3513280C] has been updated…1index(es)/statistic(s) have been updated,0 did not require update. Updating [demoDB].[Messages_0][PK__Messages__A18B4A8F226847A4] has been updated…1index(es)/statistic(s) have been updated,0 did not require update. Updating [demoDB].[Messages_0_Id][PK__Messages__A18B4A8F8CFCBFE2] has been updated…1index(es)/statistic(s) have been updated,0 did not require update. Updating [sys].[query_notification_832058050][cidx] has been updated…[_WA_Sys_00000001_319832C2] has been updated…2index(es)/statistic(s) have been updated,0 did not require update.
2. Tabla: Ejecuta lo siguiente para actualizar las estadísticas en una tabla especifica. Por ejemplo, aquí actualizamos la tabla Sales.SalesOrderDetails:
UPDATE STATISTICS Sales.SalesOrderDetails;
3. Objeto: Digamos que queremos actualizar las estadísticas sobre un objeto en particular, por ejemplo un índice o una estadística interna. En ese caso, aplicamos lo siguiente:
UPDATE STATISTICS dbo.Employee IX_Employee_OrganizationNode
WITH FULLSCAN;
El comando anterior actualiza las estadísticas del índice IX_Employee_OrganizationMode de la tabla dbo.Employee. Aquí usamos la cláusula WITH FULLSCAN para escanear todas las filas del índice.
Nota:Usar WITH FULLSCAN puede tomar más tiempo si el objeto tiene mucha data. Debería evaluar ejecutarlo en horario de oficina o cuando haya menos tráfico en la base de datos.
Y LISTO!!
Si tienes alguna duda, comentario o sugerencia, puedes mandarme un email a bitácoradeundba@gmail.com.
Al ejecutar estos comandos no habría problemas después en las tablas de la base de datos.
O algún tipo de error que se empiece a generar después.
Hola. No, esto no genera problemas. Es más bien recomendable programar este tipo de actividades mediante un job en nuestra instancia de base de datos para asegurarnos de tener planes de ejecución óptimos.
Hola, cordial saludo. Tengo una tabla de 100 millones de registros y al actualizar las estadísticas con la opcion WITH FULLSCAN se demora demasiado. Cómo se puede replantear el comando “UPDATE STATISTICS TablaGrande” con las opciones adecuadas, sin impactar el rendimiento de las consultas o el plan de ejecución?
Hola Carlos, siendo una tabla tan grande, recomendaría realizarlo en un día/hora de bajo tráfico en el cual el rendimiento no se vea muy afectado. Por ejemplo, realizarlo sólo una vez por semana el sábado o domingo de madrugada.