sp_updatestats (Transact-SQL)

S’applique à :SQL ServerAzure SQL Database

S’exécute UPDATE STATISTICS sur toutes les tables définies par l’utilisateur et internes dans la base de données active.

Pour plus d’informations sur UPDATE STATISTICS, consultez UPDATE STATISTICS (Transact-SQL). Pour plus d’informations sur les statistiques, consultez Statistiques.

Conventions de la syntaxe Transact-SQL

Syntaxe

sp_updatestats [ [ @resample = ] 'resample' ]

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Arguments

[ @resample = ] 'resample'

Spécifie qui sp_updatestats utilise l’option RESAMPLE de l’instruction UPDATE STATISTICS . Si resample ce n’est pas spécifié, sp_updatestats met à jour les statistiques à l’aide de l’échantillonnage par défaut. L’argument resample est varchar(8) avec une valeur par défaut de NO.

Notes

sp_updatestatsUPDATE STATISTICSexécute , en spécifiant le ALL mot clé, sur toutes les tables internes et définies par l’utilisateur dans la base de données. sp_updatestats affiche les messages qui indiquent sa progression. Une fois la mise à jour terminée, cette procédure signale que les statistiques ont été mises à jour pour toutes les tables.

sp_updatestats met à jour les statistiques sur les index non cluster désactivés et ne met pas à jour les statistiques sur les index cluster désactivés.

Pour les tables sur disque, sp_updatestats met à jour les statistiques en fonction des modification_counter informations de l’affichage catalogue sys.dm_db_stats_properties , en mettant à jour les statistiques où au moins une ligne a été modifiée. Les statistiques sur les tables optimisées en mémoire sont toujours mises à jour lors de l’exécution sp_updatestats. Par conséquent, n’exécutez sp_updatestats pas plus que nécessaire.

sp_updatestats peut déclencher une recompilation de procédures stockées ou d’autres codes compilés. Toutefois, sp_updatestats cela peut ne pas entraîner de recompilation, si un seul plan de requête est possible pour les tables référencées et les index sur eux. Une recompilation serait inutile dans ce cas, même si les statistiques sont mises à jour.

Pour les bases de données avec un niveau de compatibilité inférieur à 90, l’exécution sp_updatestats ne conserve pas le dernier paramètre NORECOMPUTE pour des statistiques spécifiques. Pour les bases de données avec un niveau de compatibilité de 90 ou supérieur, sp_updatestats conserve la dernière option NORECOMPUTE pour des statistiques spécifiques. Pour plus d’informations sur la désactivation et la réactivation des mises à jour des statistiques, consultez Statistiques.

Lors de la restauration d’une base de données vers SQL Server 2022 (16.x) à partir d’une version précédente, vous devez exécuter sp_updatestats la base de données. Cela est lié à la définition des métadonnées appropriées pour la fonctionnalité de suppression automatique des statistiques introduite dans SQL Server 2022 (16.x). La fonctionnalité de suppression automatique est disponible dans Azure SQL Database, Azure SQL Managed Instance et à partir de SQL Server 2022 (16.x).

Autorisations

Pour SQL Server, vous devez être propriétaire de la base de données (dbo) ou d’un membre du rôle serveur fixe sysadmin .

Pour Azure SQL Database, vous devez être membre du rôle de base de données fixe db_owner .

Exemples

L’exemple suivant met à jour les statistiques de toutes les tables de la base de données :

USE AdventureWorks2022;
GO
EXEC sp_updatestats;

Gestion automatique des index et des statistiques

Utilisez des solutions telles que la défragmentation d’index adaptatif pour gérer automatiquement la défragmentation d’index et les mises à jour des statistiques pour une ou plusieurs bases de données. Cette procédure choisit automatiquement s’il faut reconstruire ou réorganiser un index en fonction de son niveau de fragmentation, entre autres paramètres, et mettre à jour les statistiques avec un seuil linéaire.