web-dev-qa-db-fra.com

Que fait exec sp_updatestats?

À quoi sert sp_updatestats? Puis-je l'exécuter dans l'environnement de production pour améliorer les performances?

29
Vignesh

sp_updatestats met à jour toutes les statistiques de toutes les tables de la base de données, où même une seule ligne a changé. Il le fait en utilisant l'échantillon par défaut, ce qui signifie qu'il ne scanne pas toutes les lignes du tableau, il produira probablement des statistiques moins précises que les alternatives.

Si vous avez un plan de maintenance avec des "index de reconstruction" inclus, il actualisera également les statistiques, mais plus précis car il analyse toutes les lignes. Pas besoin de reconstruire les statistiques après avoir reconstruit les index.

Mise à jour manuelle d'un objet statistique particulier ou d'une table avec update statistics commande vous donne un bien meilleur contrôle sur le processus. Pour l'automatiser, jetez un oeil ici .

La mise à jour automatique se déclenche uniquement lorsque l'optimiseur décide qu'il doit le faire. Il y a eu un changement dans les mathématiques pour 2012: en <2012, la mise à jour automatique a été déclenchée pour chaque changement de 500 + 20% des lignes du tableau; en 2012+ c'est SQRT (1000 * lignes de tableau). Cela signifie qu'il est plus fréquent sur les grandes tables. Les tables temporaires se comportent bien sûr différemment.

De conclure, sp_updatestats pourrait en fait faire plus de dégâts que de bien, et c'est l'option la moins recommandée.

35
dean