sp_updatestats (Transact-SQL)

Si applica a:SQL Server database SQL di Azure

Viene eseguito UPDATE STATISTICS su tutte le tabelle interne e definite dall'utente nel database corrente.

Per altre informazioni su UPDATE STATISTICS, vedere UPDATE STATISTICS (Transact-SQL). Per altre informazioni sulle statistiche, vedere Statistiche.

Convenzioni di sintassi Transact-SQL

Sintassi

sp_updatestats [ [ @resample = ] 'resample' ]

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Argomenti

[ @resample = ] 'resample'

Specifica che sp_updatestats utilizza l'opzione RESAMPLE dell'istruzione UPDATE STATISTICS . Se resample non viene specificato, sp_updatestats aggiorna le statistiche usando il campionamento predefinito. L'argomento resample è varchar(8) con un valore predefinito .NO

Osservazioni:

sp_updatestatsUPDATE STATISTICSesegue , specificando la ALL parola chiave , in tutte le tabelle interne e definite dall'utente nel database. sp_updatestats visualizza i messaggi che indicano lo stato di avanzamento. Al termine dell'aggiornamento, viene segnalato che sono state aggiornate le statistiche di tutte le tabelle.

sp_updatestats aggiorna le statistiche sugli indici non cluster disabilitati e non aggiorna le statistiche sugli indici cluster disabilitati.

Per le tabelle basate su disco, sp_updatestats aggiorna le statistiche in base alle modification_counter informazioni nella vista del catalogo sys.dm_db_stats_properties , aggiornando le statistiche in cui è stata modificata almeno una riga. Le statistiche sulle tabelle ottimizzate per la memoria vengono sempre aggiornate durante l'esecuzione di sp_updatestats. Pertanto, non eseguire sp_updatestats più del necessario.

sp_updatestats può attivare una ricompilazione di stored procedure o di altro codice compilato. Tuttavia, sp_updatestats potrebbe non causare una ricompilazione, se è possibile un solo piano di query per le tabelle a cui si fa riferimento e gli indici su di essi. Una ricompilazione non sarebbe necessaria in tali casi anche se le statistiche vengono aggiornate.

Per i database con un livello di compatibilità inferiore a 90, l'esecuzione sp_updatestats non mantiene l'impostazione NORECOMPUTE più recente per statistiche specifiche. Per i database con un livello di compatibilità di 90 o superiore, sp_updatestats mantiene l'opzione NORECOMPUTE più recente per statistiche specifiche. Per altre informazioni sulla disabilitazione e sulla riabilitazione degli aggiornamenti delle statistiche, vedere Statistiche.

Quando si ripristina un database in SQL Server 2022 (16.x) da una versione precedente, è necessario eseguire sp_updatestats nel database. Ciò è correlato all'impostazione dei metadati appropriati per la funzionalità di rilascio automatico delle statistiche introdotta in SQL Server 2022 (16.x). La funzionalità di rilascio automatico è disponibile in database SQL di Azure, Istanza gestita di SQL di Azure e a partire da SQL Server 2022 (16.x).

Autorizzazioni

Per SQL Server, è necessario essere il proprietario del database (dbo) o un membro del ruolo predefinito del server sysadmin .

Per database SQL di Azure, è necessario essere membri del ruolo predefinito del database db_owner.

Esempi

Nell'esempio seguente vengono aggiornate le statistiche per tutte le tabelle del database:

USE AdventureWorks2022;
GO
EXEC sp_updatestats;

Gestione automatica dell'indice e delle statistiche

Usare soluzioni come la deframmentazione degli indici adattivi per gestire automaticamente la deframmentazione degli indici e gli aggiornamenti delle statistiche per uno o più database. Questa procedura sceglie automaticamente se ricompilare o riorganizzare un indice in base al livello di frammentazione, tra gli altri parametri e aggiornare le statistiche con una soglia lineare.