Aggiornare le statistiche

Si applica a:SQL Serverdatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)

È possibile aggiornare statistiche di ottimizzazione query per una tabella o una vista indicizzata in SQL Server usando SQL Server Management Studio o Transact-SQL. Per impostazione predefinita, Query Optimizer aggiorna già le statistiche in base alle esigenze per migliorare il piano di query; in alcuni casi è possibile migliorare le prestazioni delle query usando UPDATE STATISTICS o la stored procedure sp_updatestats per aggiornare le statistiche più frequentemente rispetto agli aggiornamenti predefiniti.

Sebbene consenta di garantire che le query vengano compilate con statistiche aggiornate, l'aggiornamento delle statistiche causa la ricompilazione delle query. È consigliabile non aggiornare le statistiche troppo frequentemente, perché esiste un compromesso tra il miglioramento dei piani di query e il tempo necessario per ricompilare le query. Tale equilibrio dipende dall'applicazione in uso. Per le operazioni UPDATE STATISTICS, è possibile usare tempdb per ordinare il campione di righe usato per la compilazione di statistiche.

Autorizzazioni

Se si usano UPDATE STATISTICS o si apportano modifiche tramite SQL Server Management Studio, è richiesta l'autorizzazione ALTER per la tabella o la vista. Se si usa sp_updatestats, è necessario essere un membro del ruolo predefinito del server sysadmin o il proprietario del database (dbo).

Usare SQL Server Management Studio

Aggiornare un oggetto statistiche

  1. In Esplora oggetti selezionare il segno più per espandere il database in cui si vuole aggiornare la statistica.

  2. Selezionare il segno di addizione per espandere la cartella Tabelle.

  3. Selezionare il segno più per espandere la tabella in cui aggiornare la statistica.

  4. Selezionare il segno più per espandere la cartella Statistiche .

  5. Fare clic con il pulsante destro del mouse sull'oggetto che si vuole aggiornare e scegliere Proprietà.

  6. Nella finestra di dialogo Proprietà statistiche -statistics_name selezionare la casella di controllo Aggiorna statistiche per queste colonne e quindi selezionare OK.

Usare Transact-SQL

Aggiornare un oggetto statistiche specifico

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui.

    USE AdventureWorks2022;
    GO
    -- The following example updates the statistics for the AK_SalesOrderDetail_rowguid index of the SalesOrderDetail table.
    UPDATE STATISTICS Sales.SalesOrderDetail AK_SalesOrderDetail_rowguid;
    GO
    

Aggiornare tutte le statistiche in una tabella

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui.

    USE AdventureWorks2022;
    GO
    -- The following example updates the statistics for all indexes on the SalesOrderDetail table.
    UPDATE STATISTICS Sales.SalesOrderDetail;
    GO
    

Per altre informazioni, vedere UPDATE STATISTICS.

Aggiornare tutte le statistiche in un database

  1. In Esplora oggetti connettersi a un'istanza del motore di database.

  2. Sulla barra Standard selezionare Nuova query.

  3. Copiare e incollare l'esempio seguente nella finestra di query e selezionare Esegui.

    USE AdventureWorks2022;
    GO
    -- The following example updates the statistics for all tables in the database.
    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.