Creare statisticheCreate Statistics

È possibile creare statistiche di ottimizzazione delle query per una o più colonne di una tabella o una vista indicizzata in SQL Server 2017SQL Server 2017 utilizzando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.You can create query optimization statistics on one or more columns of a table or indexed view in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Per la maggior parte delle query, tramite Query Optimizer vengono già generate le statistiche necessarie per un piano di query di alta qualità, ma in alcuni casi è necessario creare statistiche aggiuntive.For most queries, the query optimizer already generates the necessary statistics for a high-quality query plan; in a few cases, you need to create additional statistics.

Contenuto dell'argomentoIn This Topic

Prima di iniziare Before You Begin

Limitazioni e restrizioni Limitations and Restrictions

  • Prima di creare statistiche con l'istruzione CREATE STATISTICS, verificare che l'opzione AUTO_CREATE_STATISTICS sia impostata a livello di database.Before creating statistics with the CREATE STATISTICS statement, verify that the AUTO_CREATE_STATISTICS option is set at the database level. In questo modo, tramite Query Optimizer continuano a essere normalmente create statistiche di colonna singola per colonne dei predicati di query.This will ensure that the query optimizer continues to routinely create single-column statistics for query predicate columns.

  • È possibile elencare fino a 32 colonne per ogni oggetto statistiche.You can list up to 32 columns per statistics object.

  • Non è possibile eliminare, rinominare o modificare la definizione di una colonna di tabella specificata in un predicato delle statistiche filtrate.You cannot drop, rename, or alter the definition of a table column that is defined in a filtered statistics predicate.

Sicurezza Security

Autorizzazioni Permissions

L'utente deve essere il proprietario della tabella o della vista indicizzata o un membro di uno dei seguenti ruoli: ruolo predefinito del server sysadmin , ruolo predefinito del database db_owner o ruolo predefinito del database db_ddladmin .Requires that the user be the table or indexed view owner, or a member of one of the following roles: sysadmin fixed server role, db_owner fixed database role, or the db_ddladmin fixed database role.

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per creare statisticheTo create statistics

  1. In Esplora oggettifare clic sul segno più per espandere il database in cui si desidera creare una nuova statistica.In Object Explorer, click the plus sign to expand the database in which you want to create a new statistic.

  2. Fare clic sul segno più per espandere la cartella Tabelle .Click the plus sign to expand the Tables folder.

  3. Fare clic sul segno più per espandere la tabella in cui si desidera creare una nuova statistica.Click the plus sign to expand the table in which you want to create a new statistic.

  4. Fare clic con il pulsante destro del mouse sulla cartella Statistiche e scegliere Nuove statistiche.Right-click the Statistics folder and select New Statistics….

    Nella pagina Generale della finestra di dialogo Nuove statistiche per Tabellatable_name vengono visualizzate le proprietà seguenti.The following properties show on the General page in the New Statistics on Tabletable_name dialog box.

    Nome tabellaTable Name
    Consente di visualizzare il nome della tabella descritta dalle statistiche.Displays the name of the table described by the statistics.

    Nome statisticheStatistics Name
    Consente di visualizzare il nome dell'oggetto di database in cui sono archiviate le statistiche.Displays the name of the database object where the statistics are stored.

    Colonne statisticheStatistics Columns
    In questa griglia vengono visualizzate le colonne descritte dal set di statistiche specifico.This grid shows the columns described by this set of statistics. Tutti i valori presenti nella griglia sono di sola lettura.All values in the grid are read-only.

    NomeName
    Consente di visualizzare il nome della colonna descritta dalle statistiche.Displays the name of the column described by the statistics. Può trattarsi di una singola colonna o di una combinazione di colonne di una singola tabella.This can be a single column or a combination of columns in a single table.

    Tipo di datiData Type
    Consente di indicare il tipo di dati delle colonne descritte dalle statistiche.Indicates the data type of the columns described by the statistics.

    DimensioneSize
    Consente di visualizzare le dimensioni del tipo di dati per ogni colonna.Displays the size of the data type for each column.

    IdentitàIdentity
    Se è stata selezionata, questa opzione indica una colonna di identità.Indicates an identity column when it is checked.

    Consenti valori NULLAllow Nulls
    Consente di indicare se la colonna accetta valori NULL.Indicates whether the column accepts NULL values.

    AggiungiAdd
    Consente di aggiungere ulteriori colonne dalla tabella alla griglia delle statistiche.Add additional columns from the table to the statistics grid.

    RimuoviRemove
    Consente di rimuovere la colonna selezionata dalla griglia delle statistiche.Remove the selected column from the statistics grid.

    Sposta suMove Up
    Consente di spostare la colonna selezionata in una posizione precedente nella griglia delle statistiche.Move the selected column to an earlier location in the statistics grid. La posizione all'interno della griglia può avere un impatto significativo sull'utilità delle statistiche.The location in the grid can substantially impact the usefulness of the statistics.

    Sposta giùMove Down
    Consente di spostare la colonna selezionata in una posizione successiva nella griglia delle statistiche.Move the selected column to a later location in the statistics grid.

    Ultimo aggiornamento delle statistiche per le colonne selezionate:Statistics for these columns were last updated:
    Indica la data delle statistiche.Indicates how old the statistics are. Le statistiche sono più utili se sono aggiornate.Statistics are more valuable when they are current. Aggiornare le statistiche dopo aver apportato un gran numero di modifiche ai dati o aver aggiunto dati non comuni.Update statistics after large changes to the data or after adding atypical data. Le statistiche per le tabelle con una distribuzione dei dati uniforme devono essere aggiornate con minore frequenza.Statistics for tables that have a consistent distribution of data need to be updated less frequently.

    Aggiorna statistiche per le colonne selezionateUpdate statistics for these columns
    Selezionare questa opzione per aggiornare le statistiche alla chiusura della finestra di dialogo.Check to update the statistics when the dialog box is closed.

    Nella pagina Filtro della finestra di dialogo Nuove statistiche per Tabellatable_name viene visualizzata la proprietà seguente.The following property shows on the Filter page in the New Statistics on Tabletable_name dialog box.

    Espressione filtroFilter Expression
    Specifica le righe di dati da includere nelle statistiche filtrate.Defines which data rows to include in the filtered statistics. Ad esempio, Production.ProductSubcategoryID IN ( 1,2,3 )For example, Production.ProductSubcategoryID IN ( 1,2,3 )

  5. Nella pagina Generaledella finestra di dialogo Nuove statistiche per Tabella table_name fare clic su Aggiungi.In the New Statistics on Tabletable_name dialog box, on the General page, click Add.

    Nella finestra di dialogo Seleziona colonne vengono visualizzate le proprietà seguenti.The following properties show in the Select Columns dialog box. Queste informazioni sono di sola lettura.This information is read-only.

    NomeName
    Consente di visualizzare il nome della colonna descritta dalle statistiche.Displays the name of the column described by the statistics. Può trattarsi di una singola colonna o di una combinazione di colonne di una singola tabella.This can be a single column or a combination of columns in a single table.

    Tipo di datiData Type
    Consente di indicare il tipo di dati delle colonne descritte dalle statistiche.Indicates the data type of the columns described by the statistics.

    DimensioneSize
    Consente di visualizzare le dimensioni del tipo di dati per ogni colonna.Displays the size of the data type for each column.

    IdentitàIdentity
    Se viene selezionata, questa opzione consente di indicare una colonna di identità.Indicates an identity column when checked.

    Allow NULLsAllow NULLs
    Consente di indicare se la colonna accetta valori NULL.Indicates whether the column accepts NULL values.

  6. Nella finestra di dialogo Seleziona colonne selezionare le caselle di controllo per tutte le colonne per cui si desidera creare una statistica e quindi fare clic su OK.In the Select Columns dialog box, select the check box or check boxes of each column for which you want to create a statistic and then click OK.

  7. Nella finestra di dialogo Nuove statistiche per Tabellatable_name fare clic su OK.In the New Statistics on Tabletable_name dialog box, click OK.

Utilizzo di Transact-SQL Using Transact-SQL

Per creare statisticheTo create statistics

  1. In Esplora oggetticonnettersi a un'istanza del Motore di databaseDatabase Engine.In Object Explorer, connect to an instance of Motore di databaseDatabase Engine.

  2. Sulla barra Standard fare clic su Nuova query.On the Standard bar, click New Query.

  3. Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.Copy and paste the following example into the query window and click Execute.

    USE AdventureWorks2012;   
    GO  
    -- Create new statistic object called ContactMail1  
    -- on the BusinessEntityID and EmailPromotion columns in the Person.Person table.   
    
    CREATE STATISTICS ContactMail1  
        ON Person.Person (BusinessEntityID, EmailPromotion);   
    GO  
    
  4. La statistica creata nella procedura precedente può garantire risultati migliori per la query seguente.The statistic created above potentially improves the results for the following query.

    USE AdventureWorks2012;   
    GO  
    SELECT LastName, FirstName  
    FROM Person.Person  
    WHERE EmailPromotion = 2  
    ORDER BY LastName, FirstName;   
    GO  
    

    Per altre informazioni, vedere CREATE STATISTICS (Transact-SQL).For more information, see CREATE STATISTICS (Transact-SQL).