Riorganizzare e ricompilare gli indiciReorganize and Rebuild Indexes

In questo argomento si applica a: SìSQL ServerSìDatabase SQL di AzureSìAzure SQL Data Warehouse Sì Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Per il contenuto relativo alle versioni precedenti di SQL Server, vedere Riorganizzare e ricompilare gli indici.For content related to previous versions of SQL Server, see Reorganize and Rebuild Indexes.

In questo argomento viene descritto come riorganizzare o ricompilare un indice frammentato in SQL ServerSQL Server usando SQL Server Management StudioSQL Server Management Studio o Transact-SQLTransact-SQL.This topic describes how to reorganize or rebuild a fragmented index in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Tramite il Motore di database di SQL ServerSQL Server Database Engine la modifica degli indici viene eseguita automaticamente dopo ogni operazione di modifica, inserimento o eliminazione dei dati sottostanti.The Motore di database di SQL ServerSQL Server Database Engine automatically modifies indexes whenever insert, update, or delete operations are made to the underlying data. Nel tempo, queste modifiche possono provocare la frammentazione dell'indice nel database.Over time these modifications can cause the information in the index to become scattered in the database (fragmented). La frammentazione si verifica quando negli indici sono presenti pagine in cui l'ordinamento logico, basato sul valore chiave, non corrisponde all'ordinamento fisico all'interno del file di dati.Fragmentation exists when indexes have pages in which the logical ordering, based on the key value, does not match the physical ordering inside the data file. Gli indici con un alto grado di frammentazione possono essere causa del calo delle prestazioni delle query e rallentare l'applicazione, in particolare le operazioni di scansione.Heavily fragmented indexes can degrade query performance and cause your application to respond slowly, especially scan operations.

È possibile porre rimedio alla frammentazione eseguendo la riorganizzazione o la ricompilazione dell'indice.You can remedy index fragmentation by reorganizing or rebuilding an index. Per gli indici partizionati compilati in base a uno schema di partizione è possibile procedere in uno dei metodi seguenti sull'intero indice o su una singola partizione.For partitioned indexes built on a partition scheme, you can use either of these methods on a complete index or a single partition of an index. La ricompilazione di un indice consiste nell'eliminazione e nella ricreazione dell'indice.Rebuilding an index drops and re-creates the index. Questa operazione consente di rimuovere la frammentazione, rendere disponibile spazio su disco grazie alla compattazione delle pagine in base all'impostazione del fattore di riempimento esistente o specificata e riordinare le righe dell'indice in pagine contigue.This removes fragmentation, reclaims disk space by compacting the pages based on the specified or existing fill factor setting, and reorders the index rows in contiguous pages. Quando viene specificata la parola chiave ALL, tutti gli indici della tabella vengono eliminati e ricompilati in una singola transazione.When ALL is specified, all indexes on the table are dropped and rebuilt in a single transaction. La riorganizzazione di un indice richiede una quantità minima di risorse di sistema.Reorganizing an index uses minimal system resources. Questa operazione deframmenta il livello foglia di indici cluster e non cluster di tabelle e viste tramite il riordinamento fisico delle pagine al livello foglia in base all'ordine logico, da sinistra verso destra, dei nodi foglia.It defragments the leaf level of clustered and nonclustered indexes on tables and views by physically reordering the leaf-level pages to match the logical, left to right, order of the leaf nodes. La riorganizzazione consente inoltre di compattare le pagine di indiceReorganizing also compacts the index pages. in base al valore del fattore di riempimento esistente.Compaction is based on the existing fill factor value.

Prima di iniziareBefore You Begin

Rilevamento della frammentazioneDetecting Fragmentation

Il primo passaggio per decidere il metodo di deframmentazione da usare consiste nell'eseguire un'analisi dell'indice per determinare il grado di frammentazione.The first step in deciding which defragmentation method to use is to analyze the index to determine the degree of fragmentation. La funzione di sistema sys.dm_db_index_physical_statsconsente di rilevare la frammentazione in un indice specifico, in tutti gli indici di una tabella o vista indicizzata, in tutti gli indici di un database o in tutti gli indici di tutti i database.By using the system function sys.dm_db_index_physical_stats, you can detect fragmentation in a specific index, all indexes on a table or indexed view, all indexes in a database, or all indexes in all databases. Per gli indici partizionati, sys.dm_db_index_physical_stats fornisce anche informazioni sulla frammentazione per ogni partizione.For partitioned indexes, sys.dm_db_index_physical_stats also provides fragmentation information for each partition.

Il set di risultati restituito dalla funzione sys.dm_db_index_physical_stats include le colonne seguenti.The result set returned by the sys.dm_db_index_physical_stats function includes the following columns.

ColonnaColumn DescrizioneDescription
avg_fragmentation_in_percentavg_fragmentation_in_percent Percentuale di frammentazione logica (pagine non ordinate nell'indice).The percent of logical fragmentation (out-of-order pages in the index).
fragment_countfragment_count Numero di frammenti (pagine foglia fisicamente consecutive) nell'indice.The number of fragments (physically consecutive leaf pages) in the index.
avg_fragment_size_in_pagesavg_fragment_size_in_pages Numero medio di pagine in un frammento di un indice.Average number of pages in one fragment in an index.

Una volta noto il grado di frammentazione, usare la tabella seguente per determinare il metodo migliore per la correzione della frammentazione.After the degree of fragmentation is known, use the following table to determine the best method to correct the fragmentation.

Valore diavg_fragmentation_in_percent avg_fragmentation_in_percent value Istruzione correttivaCorrective statement
> 5% e < = 30%> 5% and < = 30% ALTER INDEX REORGANIZEALTER INDEX REORGANIZE
> 30%> 30% ALTER INDEX REBUILD WITH (ONLINE = ON) 1ALTER INDEX REBUILD WITH (ONLINE = ON) 1

1 È possibile eseguire la ricompilazione di un indice online oppure offline.1 Rebuilding an index can be executed online or offline. La riorganizzazione di un indice viene sempre eseguita online.Reorganizing an index is always executed online. Per ottenere una disponibilità simile a quella offerta dall'opzione di riorganizzazione è necessario ricompilare gli indici in modalità online.To achieve availability similar to the reorganize option, you should rebuild indexes online.

Questi valori costituiscono un'indicazione approssimativa per determinare il punto in cui passare da ALTER INDEX REORGANIZE a ALTER INDEX REBUILD.These values provide a rough guideline for determining the point at which you should switch between ALTER INDEX REORGANIZE and ALTER INDEX REBUILD. I valori effettivi, in realtà, variano da caso a caso.However, the actual values may vary from case to case. È importante riuscire a determinare la soglia migliore per l'ambiente in uso.It is important that you experiment to determine the best threshold for your environment. Non è consigliabile usare questi comandi per livelli ridotti di frammentazione (inferiori al 5%) poiché i vantaggi offerti dalla rimozione di una frammentazione così limitata sono praticamente annullati dal costo della riorganizzazione o della ricompilazione dell'indice.Very low levels of fragmentation (less than 5 percent) should not be addressed by either of these commands because the benefit from removing such a small amount of fragmentation is almost always vastly outweighed by the cost of reorganizing or rebuilding the index. Per altre informazioni su ALTER INDEX REORGANIZE e ALTER INDEX REBUILD, vedere ALTER INDEX (Transact-SQL).For more information about ALTER INDEX REORGANIZE and ALTER INDEX REBUILD, refer to ALTER INDEX (Transact-SQL).

Nota

In generale, non è possibile controllare la frammentazione sugli indici di dimensioni ridotte.In general, fragmentation on small indexes is often not controllable. Le pagine di indici di dimensioni ridotte vengono talvolta archiviate in extent misti.The pages of small indexes are sometimes stored on mixed extents. Poiché gli extent misti possono essere condivisi al massimo da otto oggetti, la frammentazione di un indice di dimensioni ridotte potrebbe non ridursi dopo la riorganizzazione o la ricompilazione dello stesso.Mixed extents are shared by up to eight objects, so the fragmentation in a small index might not be reduced after reorganizing or rebuilding the index.

Limitazioni e restrizioniLimitations and Restrictions

  • Gli indici con più di 128 extent vengono ricompilati in due fasi separate, logica e fisica.Indexes with more than 128 extents are rebuilt in two separate phases: logical and physical. Nella fase logica, le unità di allocazione esistenti usate dall'indice vengono contrassegnate per la deallocazione, le righe di dati vengono copiate e ordinate, quindi spostate nelle nuove unità di allocazione create per archiviare l'indice ricompilato.In the logical phase, the existing allocation units used by the index are marked for deallocation, the data rows are copied and sorted, then moved to new allocation units created to store the rebuilt index. Nella fase fisica, le unità di allocazione precedentemente contrassegnate per la deallocazione vengono fisicamente eliminate nelle transazioni brevi eseguite in background e non richiedono molti blocchi.In the physical phase, the allocation units previously marked for deallocation are physically dropped in short transactions that happen in the background, and do not require many locks. Per altre informazioni sugli extent, vedere la Guida all'architettura di pagine ed extent.For more information about extents, refer to the Pages and Extents Architecture Guide.

  • Durante la riorganizzazione, non è possibile specificare le opzioni relative a un indice.Index options cannot be specified when reorganizing an index.

  • L'istruzione ALTER INDEX REORGANIZE richiede che nel file di dati che include l'indice sia disponibile spazio, perché l'operazione può allocare solo pagine di lavoro temporanee nello stesso file, non in un altro file nel filegroup.The ALTER INDEX REORGANIZE statement requires the data file containing the index to have space available, because the operation can only allocate temporary work pages on the same file, not another file within the filegroup. Anche se nel filegroup possono essere disponibili pagine libere, è tuttavia possibile che l'utente incontri l'errore 1105: Could not allocate space for object '###' in database '###' because the '###' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.So although the filegroup might have free pages available, the user can still encounter error 1105: Could not allocate space for object '###' in database '###' because the '###' filegroup is full. Create disk space by deleting unneeded files, dropping objects in the filegroup, adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.

  • La creazione e la ricompilazione di indici non allineati per una tabella con oltre 1.000 partizioni sono possibili, ma non consigliate.Creating and rebuilding nonaligned indexes on a table with more than 1,000 partitions is possible, but is not recommended. Questo tipo di operazioni può causare riduzioni delle prestazioni e un eccessivo consumo della memoria.Doing so may cause degraded performance or excessive memory consumption during these operations.

Importante

A partire da SQL Server 2012SQL Server 2012, le statistiche non vengono create analizzando tutte le righe nella tabella quando viene creato o ricompilato un indice partizionato.Starting with SQL Server 2012SQL Server 2012, statistics are not created by scanning all the rows in the table when a partitioned index is created or rebuilt. Query Optimizer utilizza invece l'algoritmo di campionamento predefinito per generare statistiche.Instead, the query optimizer uses the default sampling algorithm to generate statistics. Per ottenere statistiche sugli indici partizionati analizzando tutte le righe nella tabella, usare CREATE STATISTICS o UPDATE STATISTICS con la clausola FULLSCAN.To obtain statistics on partitioned indexes by scanning all the rows in the table, use CREATE STATISTICS or UPDATE STATISTICS with the FULLSCAN clause.

SicurezzaSecurity

AutorizzazioniPermissions

È richiesta l'autorizzazione ALTER per la tabella o la vista.Requires ALTER permission on the table or view. L'utente deve essere un membro del ruolo predefinito del server sysadmin o dei ruoli predefiniti del database db_ddladmin e db_owner .User must be a member of the sysadmin fixed server role or the db_ddladmin and db_owner fixed database roles.

Controllare la frammentazione dell'indice tramite SQL Server Management StudioSQL Server Management StudioCheck index fragmentation using SQL Server Management StudioSQL Server Management Studio

Per controllare la frammentazione di un indiceTo check the fragmentation of an index

  1. In Esplora oggetti espandere il database contenente la tabella in cui si desidera controllare la frammentazione di un indice.In Object Explorer, Expand the database that contains the table on which you want to check an index’s fragmentation.

  2. Espandere la cartella Tabelle .Expand the Tables folder.

  3. Espandere la tabella in cui si desidera controllare la frammentazione di un indice.Expand the table on which you want to check an index’s fragmentation.

  4. Espandere la cartella Indici .Expand the Indexes folder.

  5. Fare clic con il pulsante destro del mouse sull'indice di cui si vuole controllare la frammentazione e scegliere Proprietà.Right-click the index of which you want to check the fragmentation and select Properties.

  6. In Selezione paginaselezionare Frammentazione.Under Select a page, select Fragmentation.

    Le informazioni seguenti sono disponibili nella pagina Frammentazione :The following information is available on the Fragmentation page:

    Livello di riempimento paginaPage fullness
    Indica il livello medio di riempimento delle pagine di indice, espresso come percentuale.Indicates average fullness of the index pages, as a percentage. Il valore 100% indica che le pagine di indice sono completamente piene.100% means the index pages are completely full. Il valore 50% indica che ogni pagina di indice è piena all'incirca per metà.50% means that, on average, each index page is half full.

    Frammentazione totaleTotal fragmentation
    Percentuale di frammentazione logica.The logical fragmentation percentage. Indica il numero di pagine di un indice che non sono archiviate in ordine.This indicates the number of pages in an index that are not stored in order.

    Dimensioni medie delle righeAverage row size
    Dimensioni medie di una riga al livello foglia.The average size of a leaf level row.

    Livello nidificazioneDepth
    Numero di livelli dell'indice, compreso il livello foglia.The number of levels in the index, including the leaf level.

    Record inoltratiForwarded records
    Numero di record in un heap che hanno inoltrato puntatori a un altro percorso dei dati.The number of records in a heap that have forward pointers to another data location. Questo stato si verifica durante un aggiornamento, nel caso in cui non vi sia spazio sufficiente per archiviare la riga nel percorso originale.(This state occurs during an update, when there is not enough room to store the new row in the original location.)

    Righe fantasmaGhost rows
    Numero di righe contrassegnate come eliminate ma non ancora rimosse.The number of rows that are marked as deleted but not yet removed. Queste righe verranno rimosse da un thread di pulitura nel momento in cui il server non è occupato.These rows will be removed by a clean-up thread, when the server is not busy. Questo valore non comprende le righe mantenute a causa di una transazione di isolamento dello snapshot in attesa.This value does not include rows that are being retained due to an outstanding snapshot isolation transaction.

    Tipo di indiceIndex type
    Tipo di indice.The type of index. I valori possibili sono Indice cluster, Indice non clustere XML primario.Possible values are Clustered index, Nonclustered index, and Primary XML. È inoltre possibile archiviare le tabelle come heap (senza indici), ma in questo caso non sarà possibile aprire la pagina Proprietà indice.Tables can also be stored as a heap (without indexes), but then this Index Properties page cannot be opened.

    Righe al livello fogliaLeaf-level rows
    Numero di righe al livello foglia.The number of leaf level rows.

    Dimensioni massime righeMaximum row size
    Dimensioni massime delle righe al livello foglia.The maximum leaf-level row size.

    Dimensioni minime righeMinimum row size
    Dimensioni minime delle righe al livello foglia.The minimum leaf-level row size.

    PaginePages
    Numero totale di pagine di dati.The total number of data pages.

    Partition IDPartition ID
    ID partizione dell'albero B contenente l'indice.The partition ID of the b-tree containing the index.

    Righe fantasma versioneVersion ghost rows
    Numero di record fantasma mantenuti a causa di una transazione di isolamento dello snapshot in attesa.The number of ghost records that are being retained due to an outstanding snapshot isolation transaction.

Controllare la frammentazione dell'indice tramite Transact-SQLTransact-SQLCheck index fragmentation using Transact-SQLTransact-SQL

Per controllare la frammentazione di un indiceTo check the fragmentation of an index

  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  
    -- Find the average fragmentation percentage of all indexes  
    -- in the HumanResources.Employee table.   
    SELECT a.index_id, name, avg_fragmentation_in_percent  
    FROM sys.dm_db_index_physical_stats (DB_ID(N'AdventureWorks2012'), 
          OBJECT_ID(N'HumanResources.Employee'), NULL, NULL, NULL) AS a  
        JOIN sys.indexes AS b 
          ON a.object_id = b.object_id AND a.index_id = b.index_id;   
    GO  
    

    L'istruzione potrebbe restituire un set di risultati simile al seguente.The statement above might return a result set similar to the following.

    index_id    name                                                  avg_fragmentation_in_percent  
    ----------- ----------------------------------------------------- ----------------------------  
    1           PK_Employee_BusinessEntityID                          0  
    2           IX_Employee_OrganizationalNode                        0  
    3           IX_Employee_OrganizationalLevel_OrganizationalNode    0  
    5           AK_Employee_LoginID                                   66.6666666666667  
    6           AK_Employee_NationalIDNumber                          50  
    7           AK_Employee_rowguid                                   0  
    
    (6 row(s) affected)  
    

    Per altre informazioni, vedere sys.dm_db_index_physical_stats (Transact-SQL).For more information, see sys.dm_db_index_physical_stats (Transact-SQL).

Rimuovere la frammentazione tramite SQL Server Management StudioSQL Server Management StudioRemove fragmentation using SQL Server Management StudioSQL Server Management Studio

Per riorganizzare o ricompilare un indiceTo reorganize or rebuild an index

  1. In Esplora oggetti espandere il database che contiene la tabella in cui si desidera riorganizzare un indice.In Object Explorer, Expand the database that contains the table on which you want to reorganize an index.

  2. Espandere la cartella Tabelle .Expand the Tables folder.

  3. Espandere la tabella in cui si desidera riorganizzare un indice.Expand the table on which you want to reorganize an index.

  4. Espandere la cartella Indici .Expand the Indexes folder.

  5. Fare clic con il pulsante destro del mouse sull'indice che si vuole riorganizzare e scegliere Riorganizza.Right-click the index you want to reorganize and select Reorganize.

  6. Nella finestra di dialogo Riorganizza indici verificare che nella griglia Indici da riorganizzare sia presente l'indice corretto, quindi scegliere OK.In the Reorganize Indexes dialog box, verify that the correct index is in the Indexes to be reorganized grid and click OK.

  7. Selezionare la casella di controllo Compatta dati di colonne LOB per specificare che tutte le pagine che contengono dati LOB vengano compattate.Select the Compact large object column data check box to specify that all pages that contain large object (LOB) data are also compacted.

  8. Scegliere OK.Click OK.

Per riorganizzare tutti gli indici in una tabellaTo reorganize all indexes in a table

  1. In Esplora oggetti espandere il database che contiene la tabella in cui si desidera riorganizzare gli indici.In Object Explorer, Expand the database that contains the table on which you want to reorganize the indexes.

  2. Espandere la cartella Tabelle .Expand the Tables folder.

  3. Espandere la tabella in cui si desidera riorganizzare gli indici.Expand the table on which you want to reorganize the indexes.

  4. Fare clic con il pulsante destro del mouse sulla cartella Indici e scegliere Riorganizza tutto.Right-click the Indexes folder and select Reorganize All.

  5. Nella finestra di dialogo Riorganizza indici verificare che nella griglia Indici da riorganizzaresiano presenti gli indici corretti.In the Reorganize Indexes dialog box, verify that the correct indexes are in the Indexes to be reorganized. Per rimuovere un indice dalla griglia Indici da riorganizzare , selezionare l'indice desiderato e premere CANC.To remove an index from the Indexes to be reorganized grid, select the index and then press the Delete key.

  6. Selezionare la casella di controllo Compatta dati di colonne LOB per specificare che tutte le pagine che contengono dati LOB vengano compattate.Select the Compact large object column data check box to specify that all pages that contain large object (LOB) data are also compacted.

  7. Scegliere OK.Click OK.

Per ricompilare un indiceTo rebuild an index

  1. In Esplora oggetti espandere il database che contiene la tabella in cui si desidera riorganizzare un indice.In Object Explorer, Expand the database that contains the table on which you want to reorganize an index.

  2. Espandere la cartella Tabelle .Expand the Tables folder.

  3. Espandere la tabella in cui si desidera riorganizzare un indice.Expand the table on which you want to reorganize an index.

  4. Espandere la cartella Indici .Expand the Indexes folder.

  5. Fare clic con il pulsante destro del mouse sull'indice che si vuole riorganizzare e scegliere Ricompila.Right-click the index you want to reorganize and select Rebuild.

  6. Nella finestra di dialogo Ricompila indici verificare che nella griglia Indici da ricompilare sia presente l'indice corretto, quindi scegliere OK.In the Rebuild Indexes dialog box, verify that the correct index is in the Indexes to be rebuilt grid and click OK.

  7. Selezionare la casella di controllo Compatta dati di colonne LOB per specificare che tutte le pagine che contengono dati LOB vengano compattate.Select the Compact large object column data check box to specify that all pages that contain large object (LOB) data are also compacted.

  8. Scegliere OK.Click OK.

Rimuovere la frammentazione tramite Transact-SQLTransact-SQLRemove fragmentation using Transact-SQLTransact-SQL

Per riorganizzare un indice frammentatoTo reorganize a fragmented index

  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  
    -- Reorganize the IX_Employee_OrganizationalLevel_OrganizationalNode 
    -- index on the HumanResources.Employee table.   
    
    ALTER INDEX IX_Employee_OrganizationalLevel_OrganizationalNode 
      ON HumanResources.Employee  
    REORGANIZE ;   
    GO  
    

Per riorganizzare tutti gli indici in una tabellaTo reorganize all indexes in a table

  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  
    -- Reorganize all indexes on the HumanResources.Employee table.  
    ALTER INDEX ALL ON HumanResources.Employee  
    REORGANIZE ;   
    GO  
    

Per ricompilare un indice frammentatoTo rebuild a fragmented index

  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. Nell'esempio viene ricompilato un solo indice nella tabella Employee .The example rebuilds a single index on the Employee table.

    USE AdventureWorks2012;
    GO
    ALTER INDEX PK_Employee_BusinessEntityID ON HumanResources.Employee
    REBUILD;
    GO
    

Per ricompilare tutti gli indici in una tabellaTo rebuild all indexes in a table

  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. Nell'esempio viene specificata la parola chiave ALL.Copy and paste the following example into the query The example specifies the keyword ALL. In questo modo vengono ricompilati tutti gli indici associati alla tabella.This rebuilds all indexes associated with the table. Vengono inoltre specificate tre opzioni.Three options are specified.

    USE AdventureWorks2012;
    GO
    ALTER INDEX ALL ON Production.Product
    REBUILD WITH (FILLFACTOR = 80, SORT_IN_TEMPDB = ON,
                  STATISTICS_NORECOMPUTE = ON);
    GO
    

    Per altre informazioni, vedere ALTER INDEX (Transact-SQL).For more information, see ALTER INDEX (Transact-SQL).

Gestione automatica dell'indice e delle statisticheAutomatic index and statistics management

Sfruttare le soluzioni, ad esempio la deframmentazione dell'indice adattativo, per gestire automaticamente la deframmentazione dell'indice e gli aggiornamenti delle statistiche per uno o più database.Leverage solutions such as Adaptive Index Defrag to automatically manage index defragmentation and statistics updates for one or more databases. Questa procedura sceglie automaticamente se ricompilare o riorganizzare un indice in base al relativo livello di frammentazione, tra gli altri parametri, e aggiornare le statistiche con una soglia lineare.This procedure automatically chooses whether to rebuild or reorganize an index according to its fragmentation level, amongst other parameters, and update statistics with a linear threshold.

Vedere ancheSee Also

Guida per la progettazione di indici di SQL Server SQL Server Index Design Guide
ALTER INDEX (Transact-SQL) ALTER INDEX (Transact-SQL)
Adaptive Index Defrag (Deframmentazione dell'indice adattativo)Adaptive Index Defrag
CREATE STATISTICS (Transact-SQL) CREATE STATISTICS (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)UPDATE STATISTICS (Transact-SQL)