Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

UPDATE STATISTICS (Transact-SQL)

Aggiorna le statistiche di ottimizzazione query in una tabella o una vista indicizzata. Per impostazione predefinita, Query Optimizer aggiorna già le statistiche come necessario per migliorare il piano di query. In alcuni casi è possibile migliorare le prestazioni di esecuzione delle query tramite UPDATE STATISTICS o la stored procedure sp_updatestats per aggiornare le statistiche più di frequente 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. Si consiglia di non aggiornare le statistiche troppo frequentemente perché è necessario mantenere un equilibrio a livello di prestazioni tra la necessità di migliorare i piani di query e il tempo necessario per la ricompilazione delle query. Tale equilibrio dipende dall'applicazione in uso. L'operazione UPDATE STATISTICS può utilizzare tempdb per ordinare il campione di righe per la compilazione di statistiche.

Si applica a: SQL Server (da SQL Server 2008 alla versione corrente), Database SQL di Windows Azure (dalla versione iniziale alla versione corrente).

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

UPDATE STATISTICS table_or_indexed_view_name 
    [ 
        { 
            { index_or_statistics__name }
          | ( { index_or_statistics_name } [ ,...n ] ) 
                }
    ] 
    [    WITH 
        [ 
            FULLSCAN 
            | SAMPLE number { PERCENT | ROWS } 
            | RESAMPLE 
              [ ON PARTITIONS ( { <partition_number> | <range> } [, …n] ) ]
            | <update_stats_stream_option> [ ,...n ]
        ] 
        [ [ , ] [ ALL | COLUMNS | INDEX ] 
        [ [ , ] NORECOMPUTE ] 
        [ [ , ] INCREMENTAL = { ON | OFF } ]
    ] ;

<update_stats_stream_option> ::=
    [ STATS_STREAM = stats_stream ]
    [ ROWCOUNT = numeric_constant ]
    [ PAGECOUNT = numeric_contant ]

table_or_indexed_view_name

Nome della tabella o della vista indicizzata per cui aggiornare le statistiche.

index_or_statistics_name

Nome dell'indice per cui aggiornare le statistiche o nome delle statistiche da aggiornare. Se index_or_statistics_name non viene specificato, Query Optimizer aggiorna tutte le statistiche per la tabella o la vista indicizzata, Sono incluse le statistiche create tramite l'istruzione CREATE STATISTICS, le statistiche di colonna singola create quando l'opzione AUTO_CREATE_STATISTICS è ON e quelle create per gli indici.

Per ulteriori informazioni su AUTO_CREATE_STATISTICS, vedere Opzioni ALTER DATABASE SET (Transact-SQL). Per visualizzare tutti gli indici per una tabella o una vista, è possibile utilizzare sp_helpindex.

FULLSCAN

Consente di calcolare le statistiche analizzando tutte le righe nella tabella o nella vista indicizzata. FULLSCAN e SAMPLE 100 PERCENT generano gli stessi risultati. Non è possibile utilizzare FULLSCAN con l'opzione SAMPLE.

SAMPLE number { PERCENT | ROWS }

Percentuale approssimativa o numero di righe presenti nella tabella o nella vista indicizzata utilizzate da Query Optimizer durante l'aggiornamento delle statistiche. Per PERCENT number può essere compreso tra 0 e 100, mentre per ROWS number può essere compreso tra 0 e il numero totale di righe. La percentuale effettiva o il numero di righe campionate da Query Optimizer potrebbero non corrispondere alla percentuale o al numero specificato. Query Optimizer analizza ad esempio tutte le righe in una pagina di dati.

SAMPLE è utile per i casi speciali in cui il piano di query, basato sul campionamento predefinito, non è ottimale. Nella maggior parte delle situazioni, non è necessario specificare SAMPLE perché Query Optimizer utilizza il campionamento e determina le dimensioni del campione statisticamente significative per impostazione predefinita, come richiesto per creare piani di query di alta qualità.

Questa opzione non può essere utilizzata quando viene specificata l'opzione FULLSCAN. Se non si specifica né SAMPLE né FULLSCAN, Query Optimizer utilizza i dati campionati e calcola le dimensioni del campione per impostazione predefinita.

Si sconsiglia di specificare 0 PERCENT o 0 ROWS. Se si specifica 0 PERCENT o ROWS, l'oggetto statistiche viene aggiornato ma non conterrà i dati delle statistiche.

RESAMPLE

Aggiorna ogni statistica utilizzando la frequenza di campionamento più recente.

L'utilizzo di RESAMPLE può comportare un'analisi di tabella completa. Per le statistiche per gli indici viene ad esempio utilizzata un'analisi di tabella completa per la frequenza di campionamento. Se non si specifica nessuna delle opzioni di campionamento, ovvero SAMPLE, FULLSCAN o RESAMPLE, Query Optimizer campiona i dati e calcola le dimensioni del campione per impostazione predefinita.

ON PARTITIONS ( { <numero_partizione> | <intervallo> } [, …n] ) ]

Forza la rielaborazione delle statistiche a livello foglia che coprono le partizioni specificate nella clausola ON PARTITIONS e successivamente ne determina il merge per compilare le statistiche globali. L'opzione WITH RESAMPLE è necessaria in quanto non è possibile eseguire il merge di statistiche di partizioni compilate con frequenze di campionamento differenti.

Si applica a: SQL Server 2014 tramite SQL Server 2014.

ALL | COLUMNS | INDEX

Aggiornare tutte le statistiche esistenti, le statistiche create in una o più colonne o le statistiche create per gli indici. Se non si specifica nessuna delle opzioni, l'istruzione UPDATE STATISTICS aggiorna tutte le statistiche sulla tabella o sulla vista indicizzata.

NORECOMPUTE

Disabilitare l'opzione di aggiornamento automatico delle statistiche AUTO_UPDATE_STATISTICS per le statistiche specificate. Se viene specificata questa opzione, Query Optimizer completa l'aggiornamento di queste statistiche e disabilita gli aggiornamenti futuri.

Per riabilitare il comportamento dell'opzione AUTO_UPDATE_STATISTICS, rieseguire UPDATE STATISTICS senza l'opzione NORECOMPUTE oppure eseguire sp_autostats.

Nota di attenzione Attenzione

L'utilizzo di questa opzione può produrre piani di query non ottimali. È consigliabile limitare l'utilizzo di questa opzione e riservarne l'applicazione a un amministratore del sistema qualificato.

Per ulteriori informazioni sull'opzione AUTO_UPDATE_STATISTICS, vedere Opzioni ALTER DATABASE SET (Transact-SQL).

INCREMENTAL = { ON | OFF }

Quando impostata su ON, le statistiche vengono ricreate come statistiche per partizione. Quando impostata su OFF, l'albero delle statistiche viene eliminato e le statistiche vengono rielaborate da SQL Server. Il valore predefinito è OFF.

Se le statistiche per partizione non sono supportate, viene generato un errore. Le statistiche incrementali non sono supportate per i seguenti tipi di statistiche:

  • Statistiche create con indici che non hanno il partizionamento allineato con la tabella di base.

  • Statistiche create per i database secondari leggibili AlwaysOn.

  • Statistiche create per i database di sola lettura.

  • Statistiche create per gli indici filtrati.

  • Statistiche create per le visualizzazioni.

  • Statistiche create per le tabelle interne.

  • Statistiche create con indici spaziali o indici XML.

Si applica a: SQL Server 2014 tramite SQL Server 2014.

<update_stats_stream_option>

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

Utilizzo di UPDATE STATISTICS

Per ulteriori informazioni sulle situazioni in cui utilizzare UPDATE STATISTICS, vedere Statistiche.

Aggiornamento di tutte le statistiche con sp_updatestats

Per informazioni sull'aggiornamento di statistiche per tutte le tabelle definite dall'utente e interne nel database, vedere la stored procedure sp_updatestats (Transact-SQL). Il comando seguente, ad esempio, chiama sp_updatestats per aggiornare tutte le statistiche per il database.

EXEC sp_updatestats;

Determinazione dell'ultimo aggiornamento delle statistiche

Per determinare la data dell'ultimo aggiornamento delle statistiche, utilizzare la funzione STATS_DATE.

È richiesta l'autorizzazione ALTER per la tabella o la vista.

A.Aggiornamento di tutte le statistiche di una tabella

In questo esempio vengono aggiornate le statistiche per tutti gli indici della tabella SalesOrderDetail.

USE AdventureWorks2012;
GO
UPDATE STATISTICS Sales.SalesOrderDetail;
GO

B.Aggiornamento delle statistiche per un indice

In questo esempio vengono aggiornate le statistiche relative all'indice AK_SalesOrderDetail_rowguid della tabella SalesOrderDetail.

USE AdventureWorks2012;
GO
UPDATE STATISTICS Sales.SalesOrderDetail AK_SalesOrderDetail_rowguid;
GO

C.Aggiornamento delle statistiche tramite un campionamento al 50 percento

Nell'esempio seguente vengono create e quindi aggiornate le statistiche per le colonne Name e ProductNumber della tabella Product.

USE AdventureWorks2012;
GO
CREATE STATISTICS Products
    ON Production.Product ([Name], ProductNumber)
    WITH SAMPLE 50 PERCENT
-- Time passes. The UPDATE STATISTICS statement is then executed.
UPDATE STATISTICS Production.Product(Products) 
    WITH SAMPLE 50 PERCENT;

D.Aggiornamento delle statistiche tramite le opzioni FULLSCAN e NORECOMPUTE

Nell'esempio seguente vengono aggiornate le statistiche Products della tabella Product, viene eseguita un'analisi completa di tutte le righe della tabella Product, quindi viene disattivato l'aggiornamento automatico delle statistiche di Products.

USE AdventureWorks2012;
GO
UPDATE STATISTICS Production.Product(Products)
    WITH FULLSCAN, NORECOMPUTE;
GO

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft