ALTER INDEX (Transact-SQL)ALTER INDEX (Transact-SQL)

QUESTO ARGOMENTO SI APPLICA A: sìSQL Server (a partire dalla versione 2008)sìDatabase SQL di AzuresìAzure SQL Data Warehouse sìParallel Data Warehouse THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Consente di modificare un indice di tabella o di vista esistente, di tipo relazionale o XML, tramite la disabilitazione, la ricompilazione o la riorganizzazione dell'indice oppure tramite l'impostazione di opzioni per l'indice.Modifies an existing table or view index (relational or XML) by disabling, rebuilding, or reorganizing the index; or by setting options on the index.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

-- Syntax for SQL Server and Azure SQL Database

ALTER INDEX { index_name | ALL } ON <object>  
{  
      REBUILD {  
            [ PARTITION = ALL ] [ WITH ( <rebuild_index_option> [ ,...n ] ) ]   
          | [ PARTITION = partition_number [ WITH ( <single_partition_rebuild_index_option> ) [ ,...n ] ]  
      }  
    | DISABLE  
    | REORGANIZE  [ PARTITION = partition_number ] [ WITH ( <reorganize_option>  ) ]  
    | SET ( <set_index_option> [ ,...n ] )   
    | RESUME [WITH (<resumable_index_options>,[…n])]
    | PAUSE
    | ABORT
}  
[ ; ]  

<object> ::=   
{  
    [ database_name. [ schema_name ] . | schema_name. ]   
    table_or_view_name  
}  

<rebuild_index_option > ::=  
{  
      PAD_INDEX = { ON | OFF }  
    | FILLFACTOR = fillfactor   
    | SORT_IN_TEMPDB = { ON | OFF }  
    | IGNORE_DUP_KEY = { ON | OFF }  
    | STATISTICS_NORECOMPUTE = { ON | OFF }  
    | STATISTICS_INCREMENTAL = { ON | OFF }  
    | ONLINE = {   
          ON [ ( <low_priority_lock_wait> ) ]   
        | OFF } 
    | RESUMABLE = { ON | OFF } 
    | MAX_DURATION = <time> [MINUTES}     
    | ALLOW_ROW_LOCKS = { ON | OFF }  
    | ALLOW_PAGE_LOCKS = { ON | OFF }  
    | MAXDOP = max_degree_of_parallelism  
    | COMPRESSION_DELAY = {0 | delay [Minutes]}  
    | DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE }   
        [ ON PARTITIONS ( {<partition_number> [ TO <partition_number>] } [ , ...n ] ) ]  
}  

<single_partition_rebuild_index_option> ::=  
{  
      SORT_IN_TEMPDB = { ON | OFF }  
    | MAXDOP = max_degree_of_parallelism  
    | RESUMABLE = { ON | OFF } 
    | MAX_DURATION = <time> [MINUTES}     
    | DATA_COMPRESSION = { NONE | ROW | PAGE | COLUMNSTORE | COLUMNSTORE_ARCHIVE} }  
    | ONLINE = { ON [ ( <low_priority_lock_wait> ) ] | OFF }  
}  

<reorganize_option>::=  
{  
       LOB_COMPACTION = { ON | OFF }  
    |  COMPRESS_ALL_ROW_GROUPS =  { ON | OFF}  
}  

<set_index_option>::=  
{  
      ALLOW_ROW_LOCKS = { ON | OFF }  
    | ALLOW_PAGE_LOCKS = { ON | OFF }  
    | IGNORE_DUP_KEY = { ON | OFF }  
    | STATISTICS_NORECOMPUTE = { ON | OFF }  
    | COMPRESSION_DELAY= {0 | delay [Minutes]}  
}  

<resumable_index_option> ::=
 { 
    MAXDOP = max_degree_of_parallelism
    | MAX_DURATION =<time> [MINUTES]
    | <low_priority_lock_wait>  
 }

<low_priority_lock_wait>::=  
{  
    WAIT_AT_LOW_PRIORITY ( MAX_DURATION = <time> [ MINUTES ] ,   
                          ABORT_AFTER_WAIT = { NONE | SELF | BLOCKERS } )  
}  
-- Syntax for SQL Data Warehouse and Parallel Data Warehouse 

ALTER INDEX { index_name | ALL }  
    ON   [ schema_name. ] table_name  
{  
      REBUILD {  
            [ PARTITION = ALL [ WITH ( <rebuild_index_option> ) ] ] 
          | [ PARTITION = partition_number [ WITH ( <single_partition_rebuild_index_option> )] ] 
      }  
    | DISABLE  
    | REORGANIZE [ PARTITION = partition_number ]  
}  
[;]  

<rebuild_index_option > ::=   
{  
    DATA_COMPRESSION = { COLUMNSTORE | COLUMNSTORE_ARCHIVE }
        [ ON PARTITIONS ( {<partition_number> [ TO <partition_number>] } [ , ...n ] ) ]   
}

<single_partition_rebuild_index_option > ::=   
{  
    DATA_COMPRESSION = { COLUMNSTORE | COLUMNSTORE_ARCHIVE }  
}  

ArgomentiArguments

index_nameindex_name
Nome dell'indice.Is the name of the index. I nomi di indice devono essere univoci all'interno di una tabella o di una vista, ma non all'interno di un database.Index names must be unique within a table or view but do not have to be unique within a database. I nomi di indice devono rispettare le regole di identificatori.Index names must follow the rules of identifiers.

ALLALL
Specifica tutti gli indici associati alla tabella o alla vista indipendentemente dal tipo di indice.Specifies all indexes associated with the table or view regardless of the index type. Se viene specificata la parola chiave ALL e uno o più indici si trovano in un filegroup offline o di sola lettura oppure se l'operazione specificata non è consentita per uno o più tipi di indice, l'istruzione ha esito negativo.Specifying ALL causes the statement to fail if one or more indexes are in an offline or read-only filegroup or the specified operation is not allowed on one or more index types. Nella tabella seguente vengono elencati le operazioni sugli indici e i tipi di indice non supportati.The following table lists the index operations and disallowed index types.

Utilizzando la parola chiave ALL con questa operazioneUsing the keyword ALL with this operation Indici non supportati (l'istruzione ha esito negativo se la tabella include uno o più di questi indici)Fails if the table has one or more
REBUILD WITH ONLINE = ONREBUILD WITH ONLINE = ON Indice XMLXML index

Indice spazialeSpatial index

Indice ColumnStore: si applica a: SQL ServerSQL Server (a partire da SQL Server 2012SQL Server 2012) e Database SQLSQL Database.Columnstore index: Applies to: SQL ServerSQL Server (Starting with SQL Server 2012SQL Server 2012) and Database SQLSQL Database.
REBUILD PARTITION = numero_partizioneREBUILD PARTITION = partition_number Indice non partizionato, indice XML, indice spaziale o indice disabilitatoNonpartitioned index, XML index, spatial index, or disabled index
REORGANIZEREORGANIZE Indici con ALLOW_PAGE_LOCKS impostato su OFFIndexes with ALLOW_PAGE_LOCKS set to OFF
RIORGANIZZA partizione = numero_partizioneREORGANIZE PARTITION = partition_number Indice non partizionato, indice XML, indice spaziale o indice disabilitatoNonpartitioned index, XML index, spatial index, or disabled index
IGNORE_DUP_KEY = ONIGNORE_DUP_KEY = ON Indice XMLXML index

Indice spazialeSpatial index

Indice ColumnStore: si applica a: SQL ServerSQL Server (a partire da SQL Server 2012SQL Server 2012) e Database SQLSQL Database.Columnstore index: Applies to: SQL ServerSQL Server (Starting with SQL Server 2012SQL Server 2012) and Database SQLSQL Database.
ONLINE = ONONLINE = ON Indice XMLXML index

Indice spazialeSpatial index

Indice ColumnStore: si applica a: SQL ServerSQL Server (a partire da SQL Server 2012SQL Server 2012) e Database SQLSQL Database.Columnstore index: Applies to: SQL ServerSQL Server (Starting with SQL Server 2012SQL Server 2012) and Database SQLSQL Database.
PUÒ ESSERE RIPRISTINATO = ONRESUMABLE = ON Gli indici può essere ripristinati non è supportati con tutti (parola chiave).Resumable indexes not supported with All keyword.

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2017SQL Server 2017) e Database SQLSQL DatabaseApplies to: SQL ServerSQL Server (Starting with SQL Server 2017SQL Server 2017) and Database SQLSQL Database

Avviso

Per ulteriori informazioni sulle operazioni sugli indici che è possibile eseguire online, vedere linee guida per operazioni sugli indici Online.For more detailed information about index operations that can be performed online, see Guidelines for Online Index Operations.

Se viene specificato ALL con PARTITION = numero_partizione, tutti gli indici devono essere allineati.If ALL is specified with PARTITION = partition_number, all indexes must be aligned. il che significa che devono essere partizionati in base a funzioni di partizione equivalenti.This means that they are partitioned based on equivalent partition functions. Utilizzo di ALL con PARTITION comporta tutte le partizioni dell'indice con lo stesso numero_partizione da ricompilare o riorganizzare.Using ALL with PARTITION causes all index partitions with the same partition_number to be rebuilt or reorganized. Per ulteriori informazioni sugli indici partizionati, vedere Partitioned Tables and Indexes.For more information about partitioned indexes, see Partitioned Tables and Indexes.

database_namedatabase_name
Nome del database.Is the name of the database.

schema_nameschema_name
Nome dello schema a cui appartiene la tabella o la vista.Is the name of the schema to which the table or view belongs.

table_or_view_nametable_or_view_name
Nome della tabella o della vista associata all'indice.Is the name of the table or view associated with the index. Per visualizzare un report degli indici in un oggetto, utilizzare il Sys. Indexes vista del catalogo.To display a report of the indexes on an object, use the sys.indexes catalog view.

Database SQLSQL Databasesupporta il formato di nome di tre parti database_name. table_or_view_name, dove [schema_name] quando nome_database è il database corrente oppure nome_database è tempdb e table_or_view_name inizia con #. supports the three-part name format database_name.[schema_name].table_or_view_name when the database_name is the current database or the database_name is tempdb and the table_or_view_name starts with #.

RICOMPILARE [WITH (<rebuild_index_option > [ ,... n]) ]REBUILD [ WITH (<rebuild_index_option> [ ,... n]) ]
Specifica che l'indice verrà ricompilato con le stesse colonne, lo stesso tipo di indice, lo stesso attributo di univocità e lo stesso tipo di ordinamento.Specifies the index will be rebuilt using the same columns, index type, uniqueness attribute, and sort order. Questa clausola equivale a DBCC DBREINDEX.This clause is equivalent to DBCC DBREINDEX. REBUILD abilita un indice disabilitato.REBUILD enables a disabled index. La ricompilazione di un indice cluster non comporta la ricompilazione degli indici non cluster associati, a meno che non venga specificata la parola chiave ALL.Rebuilding a clustered index does not rebuild associated nonclustered indexes unless the keyword ALL is specified. Se non vengono specificate le opzioni di indice, l'indice esistente opzione valori archiviati in Sys. Indexes vengono applicate.If index options are not specified, the existing index option values stored in sys.indexes are applied. Per qualsiasi opzione di indice il cui valore non verrà memorizzato in Sys. Indexes, si applica il valore predefinito indicato nella definizione dell'argomento dell'opzione.For any index option whose value is not stored in sys.indexes, the default indicated in the argument definition of the option applies.

Se viene specificata la parola chiave ALL e la tabella sottostante è un heap, l'operazione di ricompilazione non ha effetto sulla tabella.If ALL is specified and the underlying table is a heap, the rebuild operation has no effect on the table. Vengono ricompilati tutti gli indici non cluster associati alla tabella.Any nonclustered indexes associated with the table are rebuilt.

L'operazione di ricompilazione può essere sottoposta a una registrazione minima se viene utilizzato il modello di recupero del database con registrazione minima o con registrazione minima delle operazioni bulk.The rebuild operation can be minimally logged if the database recovery model is set to either bulk-logged or simple.

Nota

Quando si ricompila un indice XML primario, la tabella utente sottostante non è disponibile per tutta la durata dell'operazione sull'indice.When you rebuild a primary XML index, the underlying user table is unavailable for the duration of the index operation.

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2012SQL Server 2012) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2012SQL Server 2012) and Database SQLSQL Database.

Per gli indici columnstore, l'operazione di ricompilazione:For columnstore indexes, the rebuild operation:

  1. Non utilizzare il tipo di ordinamento.Does not use the sort order.

  2. Acquisisce un blocco esclusivo sulla tabella o partizione durante la ricompilazione.Acquires an exclusive lock on the table or partition while the rebuild occurs. I dati sono "offline" e non disponibili durante la ricompilazione, anche quando si usa NOLOCK, RCSI o SI.The data is “offline” and unavailable during the rebuild, even when using NOLOCK, RCSI, or SI.

  3. Ricomprime tutti i dati nel columnstore.Re-compresses all data into the columnstore. Durante la ricompilazione esistono due copie dell'indice columnstore.Two copies of the columnstore index exist while the rebuild is taking place. Al termine della ricompilazione, SQL ServerSQL Server elimina l'indice columnstore originale.When the rebuild is finished, SQL ServerSQL Server deletes the original columnstore index.

    Per ulteriori informazioni sulla ricompilazione di indici columnstore, vedere la deframmentazione di indici Columnstore:For more information about rebuilding columnstore indexes, see Columnstore indexes - defragmentation

PARTITIONPARTITION

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

Specifica che verrà ricompilata o riorganizzata solo una partizione di un indice.Specifies that only one partition of an index will be rebuilt or reorganized. PARTIZIONE non può essere specificata se index_name non è un indice partizionato.PARTITION cannot be specified if index_name is not a partitioned index.

PARTITION = ALL consente di ricompilare tutte le partizioni.PARTITION = ALL rebuilds all partitions.

Avviso

La creazione e la ricompilazione di indici non allineati per una tabella con oltre 1.000 partizioni sono possibili, ma non supportate.Creating and rebuilding nonaligned indexes on a table with more than 1,000 partitions is possible, but is not supported. 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. Quando il numero di partizioni supera 1.000, si consiglia di utilizzare solo indici allineati.We recommend using only aligned indexes when the number of partitions exceed 1,000.

numero_partizionepartition_number

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

Numero di partizioni di un indice partizionato da ricompilare o riorganizzare.Is the partition number of a partitioned index that is to be rebuilt or reorganized. numero_partizione è un'espressione costante che può fare riferimento a variabili.partition_number is a constant expression that can reference variables. incluse variabili o funzioni con tipo definito dall'utente (UDT) e funzioni definite dall'utente, ma non a istruzioni Transact-SQLTransact-SQL.These include user-defined type variables or functions and user-defined functions, but cannot reference a Transact-SQLTransact-SQL statement. numero_partizione deve esistere o l'istruzione non riesce.partition_number must exist or the statement fails.

CON (<single_partition_rebuild_index_option >)WITH (<single_partition_rebuild_index_option>)

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

L'opzione SORT_IN_TEMPDB, MAXDOP e DATA_COMPRESSION sono riportate le opzioni che possono essere specificate quando si ricompila una singola partizione (PARTITION = n ).SORT_IN_TEMPDB, MAXDOP, and DATA_COMPRESSION are the options that can be specified when you rebuild a single partition (PARTITION = n). Gli indici XML non possono essere specificati in un'operazione di ricompilazione di una singola partizione.XML indexes cannot be specified in a single partition rebuild operation.

DISABLEDISABLE
Contrassegna l'indice come disabilitato e non disponibile per l'utilizzo nel Motore di databaseDatabase Engine.Marks the index as disabled and unavailable for use by the Motore di databaseDatabase Engine. È possibile disabilitare qualsiasi indice.Any index can be disabled. La definizione di un indice disabilitato rimane nel catalogo di sistema senza i dati dell'indice sottostante.The index definition of a disabled index remains in the system catalog with no underlying index data. La disabilitazione di un indice cluster impedisce all'utente di accedere ai dati della tabella sottostante.Disabling a clustered index prevents user access to the underlying table data. Per abilitare un indice, utilizzare ALTER INDEX REBUILD oppure CREATE INDEX WITH DROP_EXISTING.To enable an index, use ALTER INDEX REBUILD or CREATE INDEX WITH DROP_EXISTING. Per ulteriori informazioni, vedere disabilitazione di indici e vincoli e Enable Indexes and Constraints.For more information, see Disable Indexes and Constraints and Enable Indexes and Constraints.

RIORGANIZZARE un indice rowstoreREORGANIZE a rowstore index
Per gli indici rowstore, REORGANIZE specifica per riorganizzare il livello foglia dell'indice.For rowstore indexes, REORGANIZE specifies to reorganize the index leaf level. L'operazione di RIORGANIZZAZIONE è:The REORGANIZE operation is:

  • Sempre eseguita online.Always performed online. Ciò significa che i blocchi di tabella a lungo termine non vengono mantenuti attivi e le query o gli aggiornamenti inerenti la tabella sottostante possono continuare durante la transazione ALTER INDEX REORGANIZE.This means long-term blocking table locks are not held and queries or updates to the underlying table can continue during the ALTER INDEX REORGANIZE transaction.

  • Non è consentita per un indice disabilitatoNot allowed for a disabled index

  • Non è consentita quando ALLOW_PAGE_LOCKS è impostata su OFFNot allowed when ALLOW_PAGE_LOCKS is set to OFF

  • Non eseguito il rollback viene eseguito all'interno di una transazione e viene eseguito il rollback della transazione.Not rolled back when it is performed within a transaction and the transaction is rolled back.

REORGANIZE CON ( LOB_COMPACTION = { ON | OFF} )REORGANIZE WITH ( LOB_COMPACTION = { ON | OFF } )
Si applica agli indici rowstore.Applies to rowstore indexes.

LOB_COMPACTION = ONLOB_COMPACTION = ON

  • Specifica per comprimere tutte le pagine che contengono dati di questi tipi di dati LOB (large object): image, text, ntext, varchar (max), nvarchar (max), varbinary (max) e xml.Specifies to compact all pages that contain data of these large object (LOB) data types: image, text, ntext, varchar(max), nvarchar(max), varbinary(max), and xml. Compattazione di questi dati, è possibile ridurre le dimensioni dei dati su disco.Compacting this data can reduce the data size on disk.

  • Per un indice cluster, questo compatta tutte le colonne LOB contenute nella tabella.For a clustered index, this compacts all LOB columns that are contained in the table.

  • Per un indice non cluster, questo compatta tutte le colonne LOB che sono colonne non chiave (incluse) nell'indice.For a nonclustered index, this compacts all LOB columns that are nonkey (included) columns in the index.

  • RIORGANIZZA tutto esegue LOB_COMPACTION tutti gli indici.REORGANIZE ALL performs LOB_COMPACTION on all indexes. Per ogni indice, si compatta tutte le colonne LOB nell'indice cluster, la tabella sottostante o le colonne incluse in un indice non cluster.For each index, this compacts all LOB columns in the clustered index, underlying table, or included columns in a nonclustered index.

LOB_COMPACTION = OFFLOB_COMPACTION = OFF

  • Le pagine contenenti dati LOB non vengono compattate.Pages that contain large object data are not compacted.

  • OFF non ha alcun effetto su un heap.OFF has no effect on a heap.

RIORGANIZZARE un indice columnstoreREORGANIZE a columnstore index
RIORGANIZZAZIONE viene eseguita online.REORGANIZE is performed online.

Per gli indici columnstore, REORGANIZE comprime ogni rowgroup delta chiuso come un gruppo di righe compresso nel columnstore.For columnstore indexes, REORGANIZE compresses each CLOSED delta rowgroup into the columnstore as a compressed rowgroup.

  • REORGANIZE non è necessario per spostare i rowgroup delta chiusi in rowgroup compressi.REORGANIZE is not required in order to move CLOSED delta rowgroups into compressed rowgroups. Il processo tuple-mover (TM) in background viene attivato periodicamente per comprimere il rowgroup delta chiuso.The background tuple-mover (TM) process wakes up periodically to compress CLOSED delta rowgroups. Quando è consigliabile usare REORGANIZE tuple-mover è in ritardo.We recommend using REORGANIZE when tuple-mover is falling behind. RIORGANIZZAZIONE di gruppi di righe è possibile comprimere in modo più aggressivo.REORGANIZE can compress rowgroups more aggressively.

  • Per comprimere tutti i rowgroup aperto e chiuso, vedere l'opzione REORGANIZE con (COMPRESS_ALL_ROW_GROUPS) in questa sezione.To compress all OPEN and CLOSED rowgroups, see the REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS) option in this section.

Per gli indici columnstore in SQL ServerSQL Server (a partire da 2016) e Database SQLSQL Database, REORGANIZE esegue le seguenti ottimizzazioni aggiuntive deframmentazione in linea:For columnstore indexes in SQL ServerSQL Server (Starting with 2016) and Database SQLSQL Database, REORGANIZE performs the following additional defragmentation optimizations online:

  • Rimuove fisicamente le righe da un gruppo di righe quando più di 10% delle righe sono stati eliminati in modo logico.Physically removes rows from a rowgroup when 10% or more of the rows have been logically deleted. I byte eliminati vengono recuperati sui supporti fisici.The deleted bytes are reclaimed on the physical media. Ad esempio, se un gruppo di righe compresso di 1 milione di righe è 100K righe eliminate, SQL Server verrà rimuovere le righe eliminate e ricomprimere il rowgroup con righe k 900.For example, if a compressed row group of 1 million rows has 100K rows deleted, SQL Server will remove the deleted rows and recompress the rowgroup with 900k rows. Salva nello spazio di archiviazione rimuovendo le righe eliminate.It saves on the storage by removing deleted rows.

  • Consente di combinare uno o più rowgroup compressi per aumentare le righe per rowgroup, il numero massimo di 1,024,576 righe.Combines one or more compressed rowgroups to increase rows per rowgroup up to the maximum of 1,024,576 rows. Ad esempio, se si importano 5 batch di 102.400 righe si otterrà 5 rowgroup compressi.For example, if you bulk import 5 batches of 102,400 rows you will get 5 compressed rowgroups. Se si esegue REORGANIZE, questi gruppi di righe verrà viene uniti in rowgroup compressi 1 di 512,000 righe dimensioni.If you run REORGANIZE, these rowgroups will get merged into 1 compressed rowgroup of size 512,000 rows. Si presuppone che si sono verificati alcun dizionario dimensioni o limitazioni della memoria.This assumes there were no dictionary size or memory limitations.

  • Gruppi di righe in cui più di 10% delle righe è stato in modo logico eliminato, SQL Server tenterà di combinare questo gruppo di righe con uno o più gruppi di righe.For rowgroups in which 10% or more of the rows have been logically deleted, SQL Server will try to combine this rowgroup with one or more rowgroups. Ad esempio, 1 rowgroup viene compresso con 500.000 righe e 21 rowgroup viene compresso con il numero massimo di 1.048.576 righe.For example, rowgroup 1 is compressed with 500,000 rows and rowgroup 21 is compressed with the maximum of 1,048,576 rows. Rowgroup 21 è 60% delle righe eliminate in modo da lasciare 409,830 righe.Rowgroup 21 has 60% of the rows deleted which leaves 409,830 rows. Ottimizza per la combinazione di questi due gruppi di righe per comprimere un gruppo di righe nuove 909,830 righe con SQL Server.SQL Server favors combining these two rowgroups to compress a new rowgroup that has 909,830 rows.

RIORGANIZZA MANTENENDO (COMPRESS_ALL_ROW_GROUPS = {ON | OFF })REORGANIZE WITH ( COMPRESS_ALL_ROW_GROUPS = { ON | OFF } )
In SQL ServerSQL Server (a partire da SQL Server 2016SQL Server 2016) e Database SQLSQL Database, il COMPRESS_ALL_ROW_GROUPS fornisce un modo per forzare il rowgroup OPEN o CLOSED nel columnstore.In SQL ServerSQL Server (Starting with SQL Server 2016SQL Server 2016) and Database SQLSQL Database, the COMPRESS_ALL_ROW_GROUPS provides a way to force OPEN or CLOSED delta rowgroups into the columnstore. Con questa opzione, non è necessario ricompilare l'indice columnstore per svuotare i rowgroup delta.With this option, it is not necessary to rebuild the columnstore index to empty the delta rowgroups. Questo, combinato con le altre remove e merge deframmentazione funzionalità rende non più necessario ricompilare l'indice nella maggior parte dei casi.This, combined with the other remove and merge defragmentation features makes it no longer necessary to rebuild the index in most situations.

  • ON impone a tutti i rowgroup in columnstore, indipendentemente dalle dimensioni e lo stato (chiusi o aperti).ON forces all rowgroups into the columnstore, regardless of size and state (CLOSED or OPEN).

  • OFF impone a tutti i rowgroup CLOSED nel columnstore.OFF forces all CLOSED rowgroups into the columnstore.

IMPOSTARE ( <set_index opzione > [ ,... n] )SET ( <set_index option> [ ,... n] )
Specifica alcune opzioni per l'indice senza ricompilare né riorganizzare l'indice.Specifies index options without rebuilding or reorganizing the index. La parola chiave SET non può essere specificata per un indice disabilitato.SET cannot be specified for a disabled index.

PAD_INDEX = { ON | OFF }PAD_INDEX = { ON | OFF }

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

Specifica il riempimento dell'indice.Specifies index padding. Il valore predefinito è OFF.The default is OFF.

ONON
La percentuale di spazio disponibile specificata in FILLFACTOR viene applicata alle pagine di livello intermedio dell'indice.The percentage of free space that is specified by FILLFACTOR is applied to the intermediate-level pages of the index. Se l'opzione FILLFACTOR non viene specificato nello stesso momento PAD_INDEX è impostata su ON, il riempimento del fattore di valore archiviato nella Sys. Indexes viene utilizzato.If FILLFACTOR is not specified at the same time PAD_INDEX is set to ON, the fill factor value stored in sys.indexes is used.

DISATTIVARE o fillfactor non è specificatoOFF or fillfactor is not specified
Le pagine di livello intermedio vengono riempite poco al di sotto della capacità massima.The intermediate-level pages are filled to near capacity. Lo spazio residuo è sufficiente per almeno una riga della dimensione massima supportata dall'indice, in base al set di chiavi nelle pagine intermedie.This leaves sufficient space for at least one row of the maximum size that the index can have, based on the set of keys on the intermediate pages.

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

Fattore di riempimento = fattore di riempimentoFILLFACTOR = fillfactor

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

Specifica una percentuale indicante il livello di riempimento del livello foglia di ogni pagina di indice applicato dal Motore di databaseDatabase Engine durante la creazione o la modifica dell'indice.Specifies a percentage that indicates how full the Motore di databaseDatabase Engine should make the leaf level of each index page during index creation or alteration. fattore di riempimento deve essere un valore intero compreso tra 1 e 100.fillfactor must be an integer value from 1 to 100. Il valore predefinito è 0.The default is 0. I valori 0 e 100 relativi al fattore di riempimento sono equivalenti.Fill factor values 0 and 100 are the same in all respects.

Un'impostazione esplicita dell'opzione FILLFACTOR viene applicata solo in fase di creazione o ricompilazione dell'indice.An explicit FILLFACTOR setting applies only when the index is first created or rebuilt. La percentuale specificata di spazio vuoto delle pagine non viene mantenuta in modo dinamico da Motore di databaseDatabase Engine.The Motore di databaseDatabase Engine does not dynamically keep the specified percentage of empty space in the pages. Per altre informazioni, vedere CREATE INDEX (Transact-SQL).For more information, see CREATE INDEX (Transact-SQL).

Per visualizzare l'impostazione del fattore di riempimento, utilizzare Sys. Indexes.To view the fill factor setting, use sys.indexes.

Importante

La creazione o la modifica di un indice cluster con un valore FILLFACTOR influisce sulla quantità di spazio di archiviazione occupata dai dati, perché i dati vengono ridistribuiti dal Motore di databaseDatabase Engine durante la creazione dell'indice cluster.Creating or altering a clustered index with a FILLFACTOR value affects the amount of storage space the data occupies, because the Motore di databaseDatabase Engine redistributes the data when it creates the clustered index.

L'OPZIONE SORT_IN_TEMPDB = {ON | OFF }SORT_IN_TEMPDB = { ON | OFF }

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

Specifica se archiviare i risultati dell'ordinamento in tempdb.Specifies whether to store the sort results in tempdb. Il valore predefinito è OFF.The default is OFF.

ONON
I risultati intermedi dell'ordinamento utilizzati per compilare l'indice vengono archiviati tempdb.The intermediate sort results that are used to build the index are stored in tempdb. Se tempdb è in un diverso set di dischi rispetto al database utente, questo potrebbe ridurre il tempo necessario per creare un indice.If tempdb is on a different set of disks than the user database, this may reduce the time needed to create an index. La quantità di spazio su disco utilizzata durante la compilazione dell'indice sarà tuttavia maggiore.However, this increases the amount of disk space that is used during the index build.

OFFOFF
I risultati intermedi dell'ordinamento vengono archiviati nello stesso database dell'indice.The intermediate sort results are stored in the same database as the index.

Se non è necessario eseguire un'operazione di ordinamento oppure se l'ordinamento può essere eseguito in memoria, l'opzione SORT_IN_TEMPDB viene ignorata.If a sort operation is not required, or if the sort can be performed in memory, the SORT_IN_TEMPDB option is ignored.

Per ulteriori informazioni, vedere opzione SORT_IN_TEMPDB per indici.For more information, see SORT_IN_TEMPDB Option For Indexes.

IGNORE_DUP_KEY = {ON | OFF}IGNORE_DUP_KEY = { ON | OFF }
Specifica l'errore restituito quando un'operazione di inserimento tenta di inserire valori di chiave duplicati in un indice univoco.Specifies the error response when an insert operation attempts to insert duplicate key values into a unique index. L'opzione IGNORE_DUP_KEY viene applicata solo alle operazioni di inserimento eseguite dopo la creazione o la ricompilazione dell'indice.The IGNORE_DUP_KEY option applies only to insert operations after the index is created or rebuilt. Il valore predefinito è OFF.The default is OFF.

ONON
Viene visualizzato un messaggio di avviso quando i valori di chiave duplicati vengono inseriti in un indice univoco.A warning message will occur when duplicate key values are inserted into a unique index. Avranno esito negativo solo le righe che violano il vincolo di unicità.Only the rows violating the uniqueness constraint will fail.

OFFOFF
Viene visualizzato un messaggio di errore quando i valori di chiave duplicati vengono inseriti in un indice univoco.An error message will occur when duplicate key values are inserted into a unique index. Viene eseguito il rollback dell'intera operazione INSERT.The entire INSERT operation will be rolled back.

Impossibile impostare IGNORE_DUP_KEY su ON per gli indici creati in una vista, gli indici non univoci, gli indici XML, gli indici spaziali e indici filtrati.IGNORE_DUP_KEY cannot be set to ON for indexes created on a view, non-unique indexes, XML indexes, spatial indexes, and filtered indexes.

Per visualizzare IGNORE_DUP_KEY, utilizzare Sys. Indexes.To view IGNORE_DUP_KEY, use sys.indexes.

Per quanto riguarda la sintassi compatibile con le versioni precedenti, WITH IGNORE_DUP_KEY equivale a WITH IGNORE_DUP_KEY = ON.In backward compatible syntax, WITH IGNORE_DUP_KEY is equivalent to WITH IGNORE_DUP_KEY = ON.

STATISTICS_NORECOMPUTE = {ON | OFF}STATISTICS_NORECOMPUTE = { ON | OFF }
Specifica se le statistiche di distribuzione vengono ricalcolate.Specifies whether distribution statistics are recomputed. Il valore predefinito è OFF.The default is OFF.

ONON
Le statistiche non aggiornate non vengono ricalcolate automaticamente.Out-of-date statistics are not automatically recomputed.

OFFOFF
Abilita l'aggiornamento automatico delle statistiche.Automatic statistics updating are enabled.

Per ripristinare l'aggiornamento automatico delle statistiche, impostare l'opzione STATISTICS_NORECOMPUTE su OFF oppure eseguire UPDATE STATISTICS senza la clausola NORECOMPUTE.To restore automatic statistics updating, set the STATISTICS_NORECOMPUTE to OFF, or execute UPDATE STATISTICS without the NORECOMPUTE clause.

Importante

La disabilitazione del ricalcolo automatico delle statistiche di distribuzione può compromettere la selezione di piani di esecuzione ottimali per le query riguardanti la tabella in Query Optimizer.Disabling automatic recomputation of distribution statistics may prevent the query optimizer from picking optimal execution plans for queries that involve the table.

STATISTICS_INCREMENTAL = {ON | OFF }STATISTICS_INCREMENTAL = { ON | OFF }
Quando ON, le statistiche create sono di tipo per le statistiche della partizione.When ON, the statistics created are per partition statistics. Quando OFF, l'albero delle statistiche viene eliminato e SQL ServerSQL Server Ricalcola le statistiche.When OFF, the statistics tree is dropped and SQL ServerSQL Server re-computes the statistics. Il valore predefinito è OFF.The default is OFF.

Se le statistiche per partizione non sono supportate, l'opzione viene ignorata e viene generato un avviso.If per partition statistics are not supported the option is ignored and a warning is generated. Le statistiche incrementali non sono supportate per i seguenti tipi di statistiche:Incremental stats are not supported for following statistics types:

  • Statistiche create con indici che non hanno il partizionamento allineato con la tabella di base.Statistics created with indexes that are not partition-aligned with the base table.
  • Statistiche create per i database secondari leggibili Always On.Statistics created on Always On readable secondary databases.
  • Statistiche create per i database di sola lettura.Statistics created on read-only databases.
  • Statistiche create per gli indici filtrati.Statistics created on filtered indexes.
  • Statistiche create per le viste.Statistics created on views.
  • Statistiche create per le tabelle interne.Statistics created on internal tables.
  • Statistiche create con indici spaziali o indici XML.Statistics created with spatial indexes or XML indexes.

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2014SQL Server 2014) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2014SQL Server 2014) and Database SQLSQL Database.

ONLINE = {ON | OFF } <come si applica a rebuild_index_option >ONLINE = { ON | OFF } <as applies to rebuild_index_option>
Specifica se le tabelle sottostanti e gli indici associati sono disponibili per le query e la modifica dei dati durante l'operazione sugli indici.Specifies whether underlying tables and associated indexes are available for queries and data modification during the index operation. Il valore predefinito è OFF.The default is OFF.

Per un indice XML o spaziale, è supportata solo l'opzione ONLINE = OFF e se ONLINE è impostata su ON viene generato un errore.For an XML index or spatial index, only ONLINE = OFF is supported, and if ONLINE is set to ON an error is raised.

Nota

Le operazioni sugli indici online sono disponibili solo in alcune edizioni di MicrosoftMicrosoft SQL ServerSQL Server.Online index operations are not available in every edition of MicrosoftMicrosoft SQL ServerSQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL ServerSQL Server, vedere edizioni e delle funzionalità supportate per SQL Server 2016SQL Server 2016 e edizioni e delle funzionalità supportate per SQL Server 2017.For a list of features that are supported by the editions of SQL ServerSQL Server, see Editions and Supported Features for SQL Server 2016SQL Server 2016 and Editions and Supported Features for SQL Server 2017.

ONON
I blocchi di tabella a lungo termine non vengono mantenuti per la durata dell'operazione sugli indici.Long-term table locks are not held for the duration of the index operation. Durante la fase principale dell'operazione viene mantenuto solo un blocco preventivo condiviso (IS, Intent Shared) sulla tabella di origine.During the main phase of the index operation, only an Intent Share (IS) lock is held on the source table. In questo modo, le query o gli aggiornamenti relativi alla tabella e agli indici sottostanti possono continuare.This allows queries or updates to the underlying table and indexes to continue. All'inizio dell'operazione viene mantenuto brevemente un blocco condiviso (S) sull'oggetto di origine.At the start of the operation, a Shared (S) lock is very briefly held on the source object. Al termine dell'operazione, se è in corso la creazione di un indice non cluster, viene mantenuto un blocco S sull'origine per un periodo di tempo molto breve. Se è in corso la creazione o l'eliminazione online di un indice cluster o la ricompilazione di un indice cluster o non cluster, viene acquisito un blocco di modifica dello schema (SCH-M).At the end of the operation, an S lock is very briefly held on the source if a nonclustered index is being created, or an SCH-M (Schema Modification) lock is acquired when a clustered index is created or dropped online, or when a clustered or nonclustered index is being rebuilt. L'opzione ONLINE non può essere impostata su ON quando viene creato un indice per una tabella temporanea locale.ONLINE cannot be set to ON when an index is being created on a local temporary table.

OFFOFF
I blocchi di tabella vengono applicati per la durata dell'operazione sugli indici.Table locks are applied for the duration of the index operation. Un'operazione sull'indice offline che crea, ricompila o elimina un indice cluster, spaziale o XML oppure che ricompila o elimina un indice non cluster, acquisisce un blocco di modifica dello schema (SCH-M) sulla tabella.An offline index operation that creates, rebuilds, or drops a clustered, spatial, or XML index, or rebuilds or drops a nonclustered index, acquires a Schema modification (Sch-M) lock on the table. Il blocco impedisce agli utenti di accedere alla tabella sottostante per la durata dell'operazione.This prevents all user access to the underlying table for the duration of the operation. Un'operazione sugli indici offline che crea un indice non cluster acquisisce un blocco condiviso (S) sulla tabella.An offline index operation that creates a nonclustered index acquires a Shared (S) lock on the table. Tale blocco impedisce l'aggiornamento della tabella sottostante ma consente operazioni di lettura, ad esempio l'esecuzione di istruzioni SELECT.This prevents updates to the underlying table but allows read operations, such as SELECT statements.

Per ulteriori informazioni, vedere come funzionano le operazioni di indice Online.For more information, see How Online Index Operations Work.

È possibile ricompilare online tutti gli indici, inclusi quelli di tabelle temporanee globali, ad eccezione dei seguenti:Indexes, including indexes on global temp tables, can be rebuilt online with the following exceptions:

  • Indici XMLXML indexes

  • Indici di tabelle temporanee localiIndexes on local temp tables

  • Un subset di un indice partizionato (è possibile ricompilare online un intero indice partizionato).A subset of a partitioned index (An entire partitioned index can be rebuilt online.)

  • Database SQLSQL Databaseprima di V12 e SQL Server precedenti a SQL Server 2012SQL Server 2012, non consentono il ONLINE opzione per la compilazione di indice cluster o ricompilare operazioni quando la tabella di base contiene varchar (max) o varbinary(max) colonne. prior to V12, and SQL Server prior to SQL Server 2012SQL Server 2012, do not permit the ONLINE option for clustered index build or rebuild operations when the base table contains varchar(max) or varbinary(max) columns.

PUÒ ESSERE RIPRISTINATO = {ON | OFF}RESUMABLE = { ON | OFF}

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2017SQL Server 2017) e Database SQLSQL DatabaseApplies to: SQL ServerSQL Server (Starting with SQL Server 2017SQL Server 2017) and Database SQLSQL Database

Specifica se un'operazione sull'indice online è ripristinabile.Specifies whether an online index operation is resumable.

INDICE, l'operazione è ripristinabile.ON Index operation is resumable.

Operazione non è ripristinabile OFF indice.OFF Index operation is not resumable.

MAX_DURATION = ora [minuti] utilizzato con può essere RIPRISTINATO = ON (richiede ONLINE = ON).MAX_DURATION = time [MINUTES] used with RESUMABLE = ON (requires ONLINE = ON).

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2017SQL Server 2017) e Database SQLSQL DatabaseApplies to: SQL ServerSQL Server (Starting with SQL Server 2017SQL Server 2017) and Database SQLSQL Database

Indica il tempo (valore intero specificato in minuti) che un ripristinabili online operazione di indice viene eseguita prima di essere stato sospeso.Indicates time (an integer value specified in minutes) that a resumable online index operation is executed before being paused.

ALLOW_ROW_LOCKS = { ON | OFF}ALLOW_ROW_LOCKS = { ON | OFF }

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

Specifica se sono consentiti blocchi di riga.Specifies whether row locks are allowed. Il valore predefinito è ON.The default is ON.

ONON
I blocchi di riga sono consentiti durante l'accesso all'indice.Row locks are allowed when accessing the index. Il Motore di databaseDatabase Engine determina quando utilizzare blocchi di riga.The Motore di databaseDatabase Engine determines when row locks are used.

OFFOFF
I blocchi di riga non vengono utilizzati.Row locks are not used.

ALLOW_PAGE_LOCKS = { ON | OFF}ALLOW_PAGE_LOCKS = { ON | OFF }

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

Specifica se sono consentiti blocchi a livello di pagina.Specifies whether page locks are allowed. Il valore predefinito è ON.The default is ON.

ONON
I blocchi a livello di pagina sono consentiti durante l'accesso all'indice.Page locks are allowed when you access the index. Il Motore di databaseDatabase Engine determina quando utilizzare blocchi a livello di pagina.The Motore di databaseDatabase Engine determines when page locks are used.

OFFOFF
I blocchi a livello di pagina non vengono utilizzati.Page locks are not used.

Nota

Quando l'opzione ALLOW_PAGE_LOCKS è impostata su OFF, non è possibile eseguire operazioni di riorganizzazione degli indici.An index cannot be reorganized when ALLOW_PAGE_LOCKS is set to OFF.

MAXDOP = max_degree_of_parallelismMAXDOP = max_degree_of_parallelism

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

Esegue l'override di massimo grado di parallelismo opzione di configurazione per la durata dell'operazione sull'indice.Overrides the max degree of parallelism configuration option for the duration of the index operation. Per altre informazioni, vedere Configurare l'opzione di configurazione del server max degree of parallelism.For more information, see Configure the max degree of parallelism Server Configuration Option. Utilizzare MAXDOP per limitare il numero di processori utilizzati durante l'esecuzione di un piano parallelo.Use MAXDOP to limit the number of processors used in a parallel plan execution. Il valore massimo è 64 processori.The maximum is 64 processors.

Importante

Sebbene l'opzione MAXDOP sia supportata a livello di sintassi per tutti gli indici XML, per un indice XML primario o spaziale ALTER INDEX utilizza attualmente solo un processore singolo.Although the MAXDOP option is syntactically supported for all XML indexes, for a spatial index or a primary XML index, ALTER INDEX currently uses only a single processor.

max_degree_of_parallelism può essere:max_degree_of_parallelism can be:

11
Disattiva la generazione di piani paralleli.Suppresses parallel plan generation.

>1>1
Limita il numero massimo di processori utilizzati in un'operazione parallela sull'indice in base al numero specificato.Restricts the maximum number of processors used in a parallel index operation to the specified number.

0 (predefinito)0 (default)
Utilizza il numero effettivo di processori o un numero inferiore in base al carico di lavoro corrente del sistema.Uses the actual number of processors or fewer based on the current system workload.

Per altre informazioni, vedere Configurazione di operazioni parallele sugli indici.For more information, see Configure Parallel Index Operations.

Nota

Le operazioni parallele sugli indici sono disponibili solo in alcune edizioni di MicrosoftMicrosoft SQL ServerSQL Server.Parallel index operations are not available in every edition of MicrosoftMicrosoft SQL ServerSQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL ServerSQL Server, vedere edizioni e delle funzionalità supportate per SQL Server 2016SQL Server 2016 .For a list of features that are supported by the editions of SQL ServerSQL Server, see Editions and Supported Features for SQL Server 2016SQL Server 2016.

COMPRESSION_DELAY = { 0 |durata [minuti] }COMPRESSION_DELAY = { 0 |duration [Minutes] }
Questa funzionalità è disponibile a partire dalla SQL Server 2016SQL Server 2016This feature is available Starting with SQL Server 2016SQL Server 2016

Per una tabella basata su disco, ritardo specifica il numero minimo di minuti che un rowgroup delta in stato di chiusura deve rimanere in rowgroup delta prima di SQL Server può ridurre in rowgroup compressi.For a disk-based table, delay specifies the minimum number of minutes a delta rowgroup in the CLOSED state must remain in the delta rowgroup before SQL Server can compress it into the compressed rowgroup. Poiché le tabelle basate su disco non tenere traccia delle insert e update volte su singole righe, SQL Server si applica il ritardo in rowgroup delta nello stato CLOSED.Since disk-based tables don't track insert and update times on individual rows, SQL Server applies the delay to delta rowgroups in the CLOSED state.
Il valore predefinito è 0 minuti.The default is 0 minutes.

Il valore predefinito è 0 minuti.The default is 0 minutes.

Per indicazioni su quando usare COMPRESSION_DELAY, vedere gli indici Columnstore per Analitica operativa in tempo reale.For recommendations on when to use COMPRESSION_DELAY, see Columnstore Indexes for Real-Time Operational Analytics.

DATA_COMPRESSIONDATA_COMPRESSION
Specifica l'opzione di compressione dei dati per l'indice, il numero di partizione o l'intervallo di partizioni specificato.Specifies the data compression option for the specified index, partition number, or range of partitions. Sono disponibili le opzioni seguenti:The options are as follows:

NessunoNONE
L'indice o le partizioni specificate non vengono compressi.Index or specified partitions are not compressed. Non si applica agli indici columnstore.This does not apply to columnstore indexes.

ROWROW
L'indice o le partizioni specificate vengono compressi utilizzando la compressione di riga.Index or specified partitions are compressed by using row compression. Non si applica agli indici columnstore.This does not apply to columnstore indexes.

PAGEPAGE
L'indice o le partizioni specificate vengono compressi utilizzando la compressione di pagina.Index or specified partitions are compressed by using page compression. Non si applica agli indici columnstore.This does not apply to columnstore indexes.

COLUMNSTORECOLUMNSTORE

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2014SQL Server 2014) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2014SQL Server 2014) and Database SQLSQL Database.

Si applica solo agli indici columnstore, inclusi gli indici columnstore cluster e quelli non cluster.Applies only to columnstore indexes, including both nonclustered columnstore and clustered columnstore indexes. COLUMNSTORE specifica di decomprimere l'indice o le partizioni specificate compresse con l'opzione COLUMNSTORE_ARCHIVE.COLUMNSTORE specifies to decompress the index or specified partitions that are compressed with the COLUMNSTORE_ARCHIVE option. Quando i dati vengono ripristinati, continueranno a essere compressi con la compressione columnstore utilizzata per tutti gli indici columnstore.When the data is restored, it will continue to be compressed with the columnstore compression that is used for all columnstore indexes.

COLUMNSTORE_ARCHIVECOLUMNSTORE_ARCHIVE

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2014SQL Server 2014) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2014SQL Server 2014) and Database SQLSQL Database.

Si applica solo agli indici columnstore, inclusi gli indici columnstore cluster e quelli non cluster.Applies only to columnstore indexes, including both nonclustered columnstore and clustered columnstore indexes. COLUMNSTORE_ARCHIVE comprimerà ulteriormente la partizione specificata a una dimensione inferiore.COLUMNSTORE_ARCHIVE will further compress the specified partition to a smaller size. Può essere utilizzata per l'archiviazione o in altre situazioni in cui sono richieste dimensioni di archiviazione inferiori ed è possibile concedere più tempo per l'archiviazione e il recupero.This can be used for archival, or for other situations that require a smaller storage size and can afford more time for storage and retrieval.

Per ulteriori informazioni sulla compressione, vedere la compressione dei dati.For more information about compression, see Data Compression.

PARTIZIONI ( { <partition_number_expression > | <intervallo >} [,... n] )ON PARTITIONS ( { <partition_number_expression> | <range> } [,...n] )

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

Specifica le partizioni alle quali si applica l'impostazione DATA_COMPRESSION.Specifies the partitions to which the DATA_COMPRESSION setting applies. Se l'indice non è partizionato, l'argomento ON PARTITIONS genererà un errore.If the index is not partitioned, the ON PARTITIONS argument will generate an error. Se la clausola ON PARTITIONS non viene fornita, l'opzione DATA_COMPRESSION si applica a tutte le partizioni di un indice partizionato.If the ON PARTITIONS clause is not provided, the DATA_COMPRESSION option applies to all partitions of a partitioned index.

<partition_number_expression > possono essere specificati nei modi seguenti:<partition_number_expression> can be specified in the following ways:

  • Fornire il numero di una partizione, ad esempio ON PARTITIONS (2).Provide the number for a partition, for example: ON PARTITIONS (2).

  • Fornire i numeri di partizione per più partizioni singole separati da virgole, ad esempio ON PARTITIONS (1, 5).Provide the partition numbers for several individual partitions separated by commas, for example: ON PARTITIONS (1, 5).

  • Fornire sia intervalli, sia singole partizioni, ad esempio ON PARTITIONS (2, 4, 6 TO 8).Provide both ranges and individual partitions: ON PARTITIONS (2, 4, 6 TO 8).

    <intervallo > possono essere specificati come numeri di partizione separati dalla parola TO, ad esempio: ON PARTITIONS (6 TO 8).<range> can be specified as partition numbers separated by the word TO, for example: ON PARTITIONS (6 TO 8).

    Per impostare tipi diversi di compressione dei dati per partizioni diverse, specificare più volte l'opzione DATA_COMPRESSION, ad esempio:To set different types of data compression for different partitions, specify the DATA_COMPRESSION option more than once, for example:

REBUILD WITH   
(  
DATA_COMPRESSION = NONE ON PARTITIONS (1),   
DATA_COMPRESSION = ROW ON PARTITIONS (2, 4, 6 TO 8),   
DATA_COMPRESSION = PAGE ON PARTITIONS (3, 5)  
);  

ONLINE = {ON | OFF } <come si applica a single_partition_rebuild_index_option >ONLINE = { ON | OFF } <as applies to single_partition_rebuild_index_option>
Specifica se un indice o una partizione dell'indice di una tabella sottostante può essere ricompilata online o offline.Specifies whether an index or an index partition of an underlying table can be rebuilt online or offline. Se RICOMPILARE viene eseguita online (ON) i dati in questa tabella sono disponibili per query e modifica dei dati durante l'operazione sull'indice.If REBUILD is performed online (ON) the data in this table is available for queries and data modification during the index operation. Il valore predefinito è OFF.The default is OFF.

ONON
I blocchi di tabella a lungo termine non vengono mantenuti per la durata dell'operazione sugli indici.Long-term table locks are not held for the duration of the index operation. Durante la fase principale dell'operazione viene mantenuto solo un blocco preventivo condiviso (IS, Intent Shared) sulla tabella di origine.During the main phase of the index operation, only an Intent Share (IS) lock is held on the source table. Avvio della ricompilazione dell'indice e un blocco Sch-M nella tabella alla fine della ricompilazione dell'indice online è necessario un blocco S sulla tabella.An S-lock on the table is required in the Starting of the index rebuild and a Sch-M lock on the table at the end of the online index rebuild. Sebbene entrambi i blocchi siano blocchi di metadati brevi, soprattutto il blocco Sch-M deve attendere il completamento di tutte le transazioni bloccanti.Although both locks are short metadata locks, especially the Sch-M lock must wait for all blocking transactions to be completed. Durante il tempo di attesa il blocco Sch-M impedisce tutte le altre transazioni in attesa dietro il blocco stesso per l'accesso alla stessa tabella.During the wait time the Sch-M lock blocks all other transactions that wait behind this lock when accessing the same table.

Nota

Ricompilazione dell'indice online è possibile impostare il low_priority_lock_wait opzioni descritte più avanti in questa sezione.Online index rebuild can set the low_priority_lock_wait options described later in this section.

OFFOFF
I blocchi di tabella vengono applicati per la durata dell'operazione sugli indici.Table locks are applied for the duration of the index operation. Il blocco impedisce agli utenti di accedere alla tabella sottostante per la durata dell'operazione.This prevents all user access to the underlying table for the duration of the operation.

WAIT_AT_LOW_PRIORITY utilizzato con ONLINE = ON solo.WAIT_AT_LOW_PRIORITY used with ONLINE=ON only.

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2014SQL Server 2014) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2014SQL Server 2014) and Database SQLSQL Database.

Per una ricompilazione di indice online è necessario attendere il blocco delle operazioni su questa tabella.An online index rebuild has to wait for blocking operations on this table. WAIT_AT_LOW_PRIORITY indica che l'operazione di ricompilazione indice online rimarrà in attesa dei blocchi con priorità bassa, consentendo alle altre operazioni di continuare mentre è in attesa che l'operazione di compilazione indice online.WAIT_AT_LOW_PRIORITY indicates that the online index rebuild operation will wait for low priority locks, allowing other operations to proceed while the online index build operation is waiting. L'omissione di WAIT AT LOW PRIORITY equivale all'opzione WAIT_AT_LOW_PRIORITY (MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE).Omitting the WAIT AT LOW PRIORITY option is equivalent to WAIT_AT_LOW_PRIORITY (MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE). Per ulteriori informazioni, vedere WAIT_AT_LOW_PRIORITY.For more information, see WAIT_AT_LOW_PRIORITY.

MAX_DURATION = ora [minuti]MAX_DURATION = time [MINUTES]

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2014SQL Server 2014) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2014SQL Server 2014) and Database SQLSQL Database.

Il tempo (valore intero specificato in minuti) di attesa con priorità bassa dei blocchi di ricompilazione di indice online durante l'esecuzione del comando DDL.The wait time (an integer value specified in minutes) that the online index rebuild locks will wait with low priority when executing the DDL command. Se l'operazione è bloccata per la MAX_DURATION tempo, uno del ABORT_AFTER_WAIT azioni verranno eseguite.If the operation is blocked for the MAX_DURATION time, one of the ABORT_AFTER_WAIT actions will be executed. MAX_DURATION ora è sempre espresso in minuti e la parola minuti può essere omesso.MAX_DURATION time is always in minutes, and the word MINUTES can be omitted.

ABORT_AFTER_WAIT = [NONE | SELF | BLOCCHI }]ABORT_AFTER_WAIT = [NONE | SELF | BLOCKERS } ]

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2014SQL Server 2014) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2014SQL Server 2014) and Database SQLSQL Database.

NessunoNONE
Continuare ad attendere il blocco con priorità normale (regolare).Continue waiting for the lock with normal (regular) priority.

SELFSELF
Esce dall'operazione DDL di ricompilazione dell'indice online attualmente in esecuzione senza eseguire alcuna azione.Exit the online index rebuild DDL operation currently being executed without taking any action.

BLOCKERSBLOCKERS
Termina tutte le transazioni utente che bloccano l'operazione DDL di ricompilazione dell'indice online in modo da poter continuare l'operazione.Kill all user transactions that block the online index rebuild DDL operation so that the operation can continue. Il BLOCCHI opzione richiede l'account di accesso l'autorizzazione ALTER ANY CONNECTION autorizzazione.The BLOCKERS option requires the login to have ALTER ANY CONNECTION permission.

RESUMERESUME

Si applica a: a partire daSQL Server 2017SQL Server 2017Applies to: Starting with SQL Server 2017SQL Server 2017

Ripresa di un'operazione sull'indice che è stata sospesa manualmente o a causa di un errore.Resume an index operation that is paused manually or due to a failure.

MAX_DURATION utilizzato con può essere RIPRISTINATO = ONMAX_DURATION used with RESUMABLE=ON

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2017SQL Server 2017) e Database SQLSQL DatabaseApplies to: SQL ServerSQL Server (Starting with SQL Server 2017SQL Server 2017) and Database SQLSQL Database

Il tempo (valore intero specificato in minuti) viene eseguita l'operazione sull'indice online può essere ripristinato dopo viene ripresa.The time (an integer value specified in minutes) the resumable online index operation is executed after being resumed. Dopo la scadenza, l'operazione può essere ripristinato è sospeso se è ancora in esecuzione.Once the time expires, the resumable operation is paused if it is still running.

WAIT_AT_LOW_PRIORITY utilizzato con può essere RIPRISTINATO = ON e ONLINE = ON.WAIT_AT_LOW_PRIORITY used with RESUMABLE=ON and ONLINE = ON.

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2017SQL Server 2017) e Database SQLSQL DatabaseApplies to: SQL ServerSQL Server (Starting with SQL Server 2017SQL Server 2017) and Database SQLSQL Database

Ripresa di una ricompilazione dell'indice online dopo una pausa deve rimanere in attesa per le operazioni di blocco in questa tabella.Resuming an online index rebuild after a pause has to wait for blocking operations on this table. WAIT_AT_LOW_PRIORITY indica che l'operazione di ricompilazione indice online rimarrà in attesa dei blocchi con priorità bassa, consentendo alle altre operazioni di continuare mentre è in attesa che l'operazione di compilazione indice online.WAIT_AT_LOW_PRIORITY indicates that the online index rebuild operation will wait for low priority locks, allowing other operations to proceed while the online index build operation is waiting. L'omissione di WAIT AT LOW PRIORITY equivale all'opzione WAIT_AT_LOW_PRIORITY (MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE).Omitting the WAIT AT LOW PRIORITY option is equivalent to WAIT_AT_LOW_PRIORITY (MAX_DURATION = 0 minutes, ABORT_AFTER_WAIT = NONE). Per ulteriori informazioni, vedere WAIT_AT_LOW_PRIORITY.For more information, see WAIT_AT_LOW_PRIORITY.

SOSPENDIPAUSE

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2017SQL Server 2017) e Database SQLSQL DatabaseApplies to: SQL ServerSQL Server (Starting with SQL Server 2017SQL Server 2017) and Database SQLSQL Database

Sospendere un'operazione di ricompilazione indice online può essere ripristinato.Pause a resumable online index rebuild operation.

INTERRUZIONEABORT

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2017SQL Server 2017) e Database SQLSQL DatabaseApplies to: SQL ServerSQL Server (Starting with SQL Server 2017SQL Server 2017) and Database SQLSQL Database

Interrompere un'operazione di indice in esecuzione o sospesa che è stata dichiarata come ripristinabile.Abort a running or paused index operation that was declared as resumable. È necessario eseguire in modo esplicito un ABORT operazione di ricompilazione di comando per terminare un indice può essere ripristinato.You have to explicitly execute an ABORT command to terminate a resumable index rebuild operation. Errore o la sospensione di un'operazione di indice può essere ripristinato non termina l'esecuzione. lascia invece l'operazione in uno stato di sospensione indefinito.Failure or pausing a resumable index operation does not terminate its execution; rather, it leaves the operation in an indefinite pause state.

OsservazioniRemarks

L'istruzione ALTER INDEX non può essere utilizzata per ripartizionare un indice o spostarlo in un filegroup diversoALTER INDEX cannot be used to repartition an index or move it to a different filegroup. né per modificare la definizione dell'indice, ad esempio per aggiungere o eliminare colonne oppure per modificarne l'ordine.This statement cannot be used to modify the index definition, such as adding or deleting columns or changing the column order. Per eseguire queste operazioni, utilizzare CREATE INDEX con la clausola DROP_EXISTING.Use CREATE INDEX with the DROP_EXISTING clause to perform these operations.

Quando un'opzione non viene specificata in modo esplicito, viene applicata l'impostazione corrente.When an option is not explicitly specified, the current setting is applied. Se, ad esempio, non viene specificata un'impostazione per FILLFACTOR nella clausola REBUILD, verrà utilizzato il valore del fattore di riempimento archiviato nel catalogo di sistema durante il processo di ricompilazione.For example, if a FILLFACTOR setting is not specified in the REBUILD clause, the fill factor value stored in the system catalog will be used during the rebuild process. Per visualizzare le impostazioni correnti delle opzioni di indice, utilizzare Sys. Indexes.To view the current index option settings, use sys.indexes.

Nota

I valori di ONLINE, MAXDOP e SORT_IN_TEMPDB non vengono archiviati nel catalogo di sistema.The values for ONLINE, MAXDOP, and SORT_IN_TEMPDB are not stored in the system catalog. Se non viene specificato un valore nell'istruzione dell'indice, viene utilizzato il valore predefinito dell'opzione.Unless specified in the index statement, the default value for the option is used.

Nei computer multiprocessore l'istruzione ALTER INDEX REBUILD utilizza automaticamente più processori per eseguire le operazioni di analisi e ordinamento associate alla modifica dell'indice, in modo identico ad altre query.On multiprocessor computers, just like other queries do, ALTER INDEX REBUILD automatically uses more processors to perform the scan and sort operations that are associated with modifying the index. Quando si esegue ALTER INDEX REORGANIZE, con o senza LOB_COMPACTION, il massimo grado di parallelismo valore è un'operazione a thread singolo.When you run ALTER INDEX REORGANIZE, with or without LOB_COMPACTION, the max degree of parallelism value is a single threaded operation. Per altre informazioni, vedere Configurazione di operazioni parallele sugli indici.For more information, see Configure Parallel Index Operations.

Non è possibile riorganizzare o ricompilare indici contenuti in un filegroup offline o di sola lettura.An index cannot be reorganized or rebuilt if the filegroup in which it is located is offline or set to read-only. Quando viene specificata la parola chiave ALL e uno o più indici si trovano in un filegroup offline o di sola lettura, l'istruzione ha esito negativo.When the keyword ALL is specified and one or more indexes are in an offline or read-only filegroup, the statement fails.

La ricompilazione degli indiciRebuilding Indexes

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. Non è necessario eliminare in anticipo i vincoli FOREIGN KEY.FOREIGN KEY constraints do not have to be dropped in advance. Quando vengono ricompilati indici con un numero di extent pari o superiore a 128, il Motore di databaseDatabase Engine posticipa le effettive deallocazioni delle pagine e i blocchi associati fino al termine del commit della transazione.When indexes with 128 extents or more are rebuilt, the Motore di databaseDatabase Engine defers the actual page deallocations, and their associated locks, until after the transaction commits.

La ricompilazione o la riorganizzazione degli indici di dimensioni ridotte spesso non riduce la frammentazione.Rebuilding or reorganizing small indexes often does not reduce fragmentation. 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 in un indice di dimensioni ridotte potrebbe non ridursi dopo la riorganizzazione o la ricompilazione dell'indice.Mixed extents are shared by up to eight objects, so the fragmentation in a small index might not be reduced after reorganizing or rebuilding it.

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, utilizzare 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.

Nelle versioni precedenti di SQL ServerSQL Server è talvolta possibile ricompilare un indice non cluster per risolvere le incoerenze causate da errori hardware.In earlier versions of SQL ServerSQL Server, you could sometimes rebuild a nonclustered index to correct inconsistencies caused by hardware failures. In SQL Server 2008SQL Server 2008 e nelle versioni successive, è ancora possibile correggere tali incoerenze tra l'indice e l'indice cluster tramite la ricompilazione di un indice non cluster offline.In SQL Server 2008SQL Server 2008 and later, you may still be able to repair such inconsistencies between the index and the clustered index by rebuilding a nonclustered index offline. Non è possibile, tuttavia, correggere le incoerenze di indici non cluster tramite la ricompilazione dell'indice online, in quanto il meccanismo di ricompilazione online utilizza l'indice non cluster esistente come base per la ricompilazione e di conseguenza l'incoerenza persiste.However, you cannot repair nonclustered index inconsistencies by rebuilding the index online, because the online rebuild mechanism will use the existing nonclustered index as the basis for the rebuild and thus persist the inconsistency. La ricompilazione dell'indice offline può talvolta forzare l'analisi dell'indice cluster (o dell'heap) rimuovendo pertanto l'incoerenza.Rebuilding the index offline can sometimes force a scan of the clustered index (or heap) and so remove the inconsistency. Per garantire una ricompilazione dall'indice cluster, eliminare e ricreare l'indice non cluster.To assure a rebuild from the clustered index, drop and recreate the non-clustered index. Come nelle versioni precedenti, il metodo consigliato per il recupero in seguito all'individuazione di incoerenze consiste nel ripristino da backup dei dati interessati. È tuttavia possibile correggere le incoerenze dell'indice tramite la ricompilazione offline dell'indice non cluster.As with earlier versions, we recommend recovering from inconsistencies by restoring the affected data from a backup; however, you may be able to repair the index inconsistencies by rebuilding the nonclustered index offline. Per altre informazioni, vedere DBCC CHECKDB (Transact-SQL).For more information, see DBCC CHECKDB (Transact-SQL).

Per ricompilare un indice columnstore cluster, SQL ServerSQL Server:To rebuild a clustered columnstore index, SQL ServerSQL Server:

  1. Acquisisce un blocco esclusivo sulla tabella o partizione durante la ricompilazione.Acquires an exclusive lock on the table or partition while the rebuild occurs. I dati sono "offline" e non disponibili durante la ricompilazione.The data is “offline” and unavailable during the rebuild.

  2. Deframmenta il columnstore eliminando fisicamente le righe eliminate in modo logico dalla tabella; i byte eliminati vengono recuperati sui supporti fisici.Defragments the columnstore by physically deleting rows that have been logically deleted from the table; the deleted bytes are reclaimed on the physical media.

  3. Legge tutti i dati dell'indice columnstore originale, incluso il deltastore.Reads all data from the original columnstore index, including the deltastore. Combina i dati in nuovi rowgroup e comprime i rowgroup nel columnstore.It combines the data into new rowgroups, and compresses the rowgroups into the columnstore.

  4. Richiede spazio sul supporto fisico per archiviare due copie dell'indice columnstore durante la ricompilazione.Requires space on the physical media to store two copies of the columnstore index while the rebuild is taking place. Al termine della ricompilazione, SQL ServerSQL Server elimina l'indice columnstore cluster originale.When the rebuild is finished, SQL ServerSQL Server deletes the original clustered columnstore index.

La riorganizzazione degli indiciReorganizing Indexes

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. Per visualizzare l'impostazione del fattore di riempimento, utilizzare Sys. Indexes.To view the fill factor setting, use sys.indexes.

Quando viene specificata la parola chiave ALL, vengono riorganizzati gli indici relazionali, sia cluster sia non cluster, e gli indici XML della tabella.When ALL is specified, relational indexes, both clustered and nonclustered, and XML indexes on the table are reorganized. La parola chiave ALL prevede alcune restrizioni. Per informazioni, vedere la relativa definizione nella sezione Argomenti.Some restrictions apply when specifying ALL, see the definition for ALL in the Arguments section.

Per altre informazioni, vedere Riorganizzare e ricompilare gli indici.For more information, see Reorganize and Rebuild Indexes.

Disabilitazione di indiciDisabling Indexes

La disabilitazione di un indice impedisce agli utenti di accedere all'indice e, nel caso di indici cluster, ai dati della tabella sottostante.Disabling an index prevents user access to the index, and for clustered indexes, to the underlying table data. La definizione dell'indice rimane archiviata nel catalogo di sistema.The index definition remains in the system catalog. La disabilitazione di un indice non cluster o di un indice cluster di una vista elimina fisicamente i dati dell'indice.Disabling a nonclustered index or clustered index on a view physically deletes the index data. La disabilitazione di un indice cluster impedisce l'accesso ai dati, i quali tuttavia rimangono archiviati in forma non gestita nell'albero B fino all'eliminazione o alla ricompilazione dell'indice.Disabling a clustered index prevents access to the data, but the data remains unmaintained in the B-tree until the index is dropped or rebuilt. Per visualizzare lo stato di un indice abilitato o disabilitato, eseguire una query di is_disabled colonna il Sys. Indexes vista del catalogo.To view the status of an enabled or disabled index, query the is_disabled column in the sys.indexes catalog view.

Se una tabella è inclusa in una pubblicazione per la replica transazionale, non è possibile disabilitare gli indici associati a colonne chiave primaria.If a table is in a transactional replication publication, you cannot disable any indexes that are associated with primary key columns. Questi indici sono necessari per la replica.These indexes are required by replication. Per disabilitare un indice, è innanzitutto necessario eliminare la tabella dalla pubblicazione.To disable an index, you must first drop the table from the publication. Per altre informazioni, vedere Pubblicare dati e oggetti di database.For more information, see Publish Data and Database Objects.

Per abilitare l'indice, utilizzare l'istruzione ALTER INDEX REBUILD oppure CREATE INDEX WITH DROP_EXISTING.Use the ALTER INDEX REBUILD statement or the CREATE INDEX WITH DROP_EXISTING statement to enable the index. Quando l'opzione ONLINE è impostata su ON, non è possibile ricompilare un indice cluster disabilitato.Rebuilding a disabled clustered index cannot be performed with the ONLINE option set to ON. Per altre informazioni, vedere Disabilitazione di indici e vincoli.For more information, see Disable Indexes and Constraints.

Impostazione delle opzioniSetting Options

È possibile impostare le opzioni ALLOW_ROW_LOCKS, ALLOW_PAGE_LOCKS, IGNORE_DUP_KEY e STATISTICS_NORECOMPUTE per un indice specificato senza ricompilare o riorganizzare l'indice.You can set the options ALLOW_ROW_LOCKS, ALLOW_PAGE_LOCKS, IGNORE_DUP_KEY and STATISTICS_NORECOMPUTE for a specified index without rebuilding or reorganizing that index. I valori modificati vengono applicati immediatamente all'indice.The modified values are immediately applied to the index. Per visualizzare queste impostazioni, utilizzare Sys. Indexes.To view these settings, use sys.indexes. Per altre informazioni vedere Impostare le opzioni di indice.For more information, see Set Index Options.

Opzioni per blocchi di riga e di paginaRow and Page Locks Options

Se ALLOW_ROW_LOCKS = ON e ALLOW_PAGE_LOCK = ON, sono consentiti blocchi di riga, di pagina e di tabella per l'accesso all'indice.When ALLOW_ROW_LOCKS = ON and ALLOW_PAGE_LOCK = ON, row-level, page-level, and table-level locks are allowed when you access the index. Motore di databaseDatabase Engine sceglie il blocco appropriato e può eseguire un'escalation del blocco da un blocco di riga o di pagina a un blocco di tabella.The Motore di databaseDatabase Engine chooses the appropriate lock and can escalate the lock from a row or page lock to a table lock.

Se ALLOW_ROW_LOCKS = OFF e ALLOW_PAGE_LOCK = OFF, sono consentiti solo blocchi a livello di tabella per l'accesso all'indice.When ALLOW_ROW_LOCKS = OFF and ALLOW_PAGE_LOCK = OFF, only a table-level lock is allowed when you access the index.

Se si specifica la parola chiave ALL durante l'impostazione di opzioni per blocchi di riga o di pagina, le impostazioni vengono applicate a tutti gli indici.If ALL is specified when the row or page lock options are set, the settings are applied to all indexes. Se la tabella sottostante è un heap, le impostazioni vengono applicate nei modi seguenti:When the underlying table is a heap, the settings are applied in the following ways:

ALLOW_ROW_LOCKS = ON o OFFALLOW_ROW_LOCKS = ON or OFF Viene applicata all'heap e a tutti gli indici non cluster associati.To the heap and any associated nonclustered indexes.
ALLOW_PAGE_LOCKS = ONALLOW_PAGE_LOCKS = ON Viene applicata all'heap e a tutti gli indici non cluster associati.To the heap and any associated nonclustered indexes.
ALLOW_PAGE_LOCKS = OFFALLOW_PAGE_LOCKS = OFF Viene applicata agli indici non cluster.Fully to the nonclustered indexes. Ciò significa che negli indici non cluster non è consentito alcun blocco a livello di pagina.This means that all page locks are not allowed on the nonclustered indexes. Nell'heap non sono consentiti solo i blocchi condivisi (S), di aggiornamento (U) ed esclusivi (X) per la pagina.On the heap, only the shared (S), update (U) and exclusive (X) locks for the page are not allowed. Il Motore di databaseDatabase Engine può comunque acquisire un blocco preventivo a livello di pagina (IS, IU o IX) per scopi interni.The Motore di databaseDatabase Engine can still acquire an intent page lock (IS, IU or IX) for internal purposes.

Operazioni sugli indici onlineOnline Index Operations

Quando si ricompila un indice e l'opzione ONLINE è impostata su ON, gli oggetti sottostanti, ovvero le tabelle e gli indici associati, risultano disponibili per query e operazioni di modifica dei dati.When rebuilding an index and the ONLINE option is set to ON, the underlying objects, the tables and associated indexes, are available for queries and data modification. È inoltre possibile ricompilare online una parte di indice che risiede in una singola partizione.You can also rebuild online a portion of an index residing on a single partition. I blocchi di tabella esclusivi vengono mantenuti attivi per un periodo di tempo molto limitato durante il processo di modifica.Exclusive table locks are held only for a very short amount of time during the alteration process.

La riorganizzazione di un indice viene sempre eseguita online.Reorganizing an index is always performed online. Questo processo non mantiene attivi i blocchi a lungo termine e non blocca pertanto le query o gli aggiornamenti in corso.The process does not hold locks long term and, therefore, does not block queries or updates that are running.

In una stessa tabella o partizione di tabella è possibile eseguire in modo simultaneo solo le operazioni sugli indici online seguenti:You can perform concurrent online index operations on the same table or table partition only when doing the following:

  • Creazione di più indici non cluster.Creating multiple nonclustered indexes.
  • Riorganizzazione di indici diversi della stessa tabella.Reorganizing different indexes on the same table.
  • Riorganizzazione di indici diversi durante la ricompilazione di indici non sovrapposti della stessa tabella.Reorganizing different indexes while rebuilding nonoverlapping indexes on the same table.

    Qualsiasi altra operazione sugli indici online eseguita nello stesso istante avrà esito negativo.All other online index operations performed at the same time fail. Non è ad esempio possibile ricompilare due o più indici della stessa tabella simultaneamente né creare un nuovo indice durante la ricompilazione di un indice esistente nella stessa tabella.For example, you cannot rebuild two or more indexes on the same table concurrently, or create a new index while rebuilding an existing index on the same table.

Operazioni sugli indici può essere ripristinatoResumable index operations

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2017SQL Server 2017) e Database SQLSQL DatabaseApplies to: SQL ServerSQL Server (Starting with SQL Server 2017SQL Server 2017) and Database SQLSQL Database

RICOSTRUZIONE di un indice ONLINE viene specificato come ripristinabili utilizzando il può essere RIPRISTINATO = opzione.ONLINE INDEX REBUILD is specified as resumable using the RESUMABLE=ON option.

  • L'opzione può essere RIPRISTINATO non è persistente nei metadati per un determinato indice e si applica solo alla durata di un'istruzione DDL corrente.The RESUMABLE option is not persisted in the metadata for a given index and applies only to the duration of a current DDL statement. Pertanto, il può essere RIPRISTINATO = ON clausola deve essere specificata in modo esplicito affinché funzioni.Therefore, the RESUMABLE=ON clause must be specified explicitly to enable resumability.
  • Tenere presente due diverse opzioni MAX_DURATION.Please note two different MAX_DURATION options. Uno è correlato a low_priority_lock_wait e l'altro è correlato a può essere RIPRISTINATO = opzione.One is related to low_priority_lock_wait and the other is related to RESUMABLE=ON option.
    • Opzione MAX_DURATION è supportata per può essere RIPRISTINATO = opzione o low_priority_lock_wait argomento opzione.MAX_DURATION option is supported for RESUMABLE=ON option or the low_priority_lock_wait argument option.
    • MAX_DURATION per l'opzione può essere RIPRISTINATO specifica l'intervallo di tempo per un indice da ricompilare.MAX_DURATION for RESUMABLE option specifies the time interval for an index being rebuild. Dopo questa fase viene utilizzata la ricompilazione dell'indice è sospesa o completa l'esecuzione.Once this time is used the index rebuild is either paused or it completes its execution. Utente decide quando una ricompilazione per un indice in pausa può essere ripreso.User decides when a rebuild for a paused index can be resumed. Il tempo in minuti per MAX_DURATION deve essere maggiore di 0 minuti e minore o uguale una settimana (7 * 24 * 60 = 10080 minuti).The time in minutes for MAX_DURATION must be greater than 0 minutes and less or equal one week (7 * 24 * 60 = 10080 minutes). Con un intervallo lungo per un'operazione di indice possono influire sulle prestazioni DML su una tabella specifica, nonché la capacità del disco del database poiché entrambi gli indici di quello di origine e quello appena creato richiede spazio su disco, è necessario aggiornare durante le operazioni DML.Having a long pause for an index operation may impact the DML performance on a specific table as well as the database disk capacity since both indexes the original one and the newly created one require disk space and need to be updated during DML operations. Se l'opzione MAX_DURATION viene omessa, l'operazione sull'indice continuerà fino al completamento o fino a quando non si verifica un errore.If MAX_DURATION option is omitted, the index operation will continue until its completion or until a failure occurs.
  • Il <low_priority_lock_wait > argomento consente di decidere come procedere l'operazione sull'indice durante l'attesa sul blocco SCH-M.The <low_priority_lock_wait> argument option allows you to decide how the index operation can proceed when blocked on the SCH-M lock.

  • Eseguire nuovamente l'istruzione ALTER INDEX REBUILD originale con gli stessi parametri riprende un'operazione di ricompilazione indice sospesa.Re-executing the original ALTER INDEX REBUILD statement with the same parameters resumes a paused index rebuild operation. È inoltre possibile riprendere un'operazione di ricompilazione indice sospeso tramite l'istruzione ALTER INDEX riprendere.You can also resume a paused index rebuild operation by executing the ALTER INDEX RESUME statement.

  • L'opzione SORT_IN_TEMPDB = ON opzione non è supportata per l'indice può essere ripristinatoThe SORT_IN_TEMPDB=ON option is not supported for resumable index
  • Il comando DDL con può essere RIPRISTINATO = ON non può essere eseguita all'interno di una transazione esplicita (può far parte di begin tran...The DDL command with RESUMABLE=ON cannot be executed inside an explicit transaction (cannot be part of begin tran … blocco di commit).commit block).
  • Solo le operazioni sugli indici che sono in pausa sono ripristinabili.Only index operations that are paused are resumable.
  • Quando si riprende un'operazione sull'indice che è stata sospesa, è possibile modificare il valore MAXDOP per un nuovo valore.When resuming an index operation that is paused, you can change the MAXDOP value to a new value. Se MAXDOP non viene specificato quando si riprende un'operazione sull'indice che è stato sospeso, viene eseguita l'ultimo valore MAXDOP.If MAXDOP is not specified when resuming an index operation that is paused, the last MAXDOP value is taken. Se l'opzione MAXDOP non è specificato in qualsiasi per l'operazione di ricompilazione dell'indice, verrà usato il valore predefinito.IF the MAXDOP option is not specified at all for index rebuild operation, the default value is taken.
  • Per sospendere immediatamente l'operazione sull'indice, è possibile arrestare il comando in corso (Ctrl-C) o è possibile eseguire il comando ALTER INDEX sospendere o il comando KILL session_id comando.To pause immediately the index operation, you can stop the ongoing command (Ctrl-C) or you can execute the ALTER INDEX PAUSE command or the KILL session_id command. Quando viene sospeso il comando può essere ripreso utilizzando l'opzione RESUME.Once the command is paused it can be resumed using RESUME option.
  • Il comando di interruzione termina la sessione che ospitati la ricompilazione dell'indice originale e interrompe l'operazione di indiceThe ABORT command kills the session that hosted the original index rebuild and aborts the index operation
  • Non sono necessarie per la ricompilazione dell'indice può essere ripristinato, ad eccezione di alcun risorse aggiuntiveNo extra resources are required for resumable index rebuild except for
    • Spazio aggiuntivo necessario per mantenere l'indice viene compilato, incluso il tempo in cui è in pausa l'indiceAdditional space required to keep the index being built, including the time when index is being paused
    • Uno stato DDL impedendo di apportare eventuali modifiche DDLA DDL state preventing any DDL modification
  • La pulizia fantasma verrà eseguito durante la fase di sospensione di indice, ma viene messa in pausa durante l'esecuzione di indiceThe ghost cleanup will be running during the index pause phase, but it will be paused during index run
    La seguente funzionalità è disabilitata per operazioni di ricompilazione dell'indice può essere ripristinatoThe following functionality is disabled for resumable index rebuild operations
    • Ricompilazione di un indice disabilitato non è supportata con può essere RIPRISTINATO = ONRebuilding an index that is disabled is not supported with RESUMABLE=ON
    • Comando ALTER INDEX REBUILD ALLALTER INDEX REBUILD ALL command
    • La ricostruzione dell'indice utilizzando ALTER TABLEALTER TABLE using index rebuild
    • Comando DDL con "RESUMEABLE = ON" non può essere eseguita all'interno di una transazione esplicita (può far parte di begin tran...DDL command with “RESUMEABLE = ON” cannot be executed inside an explicit transaction (cannot be part of begin tran … blocco di commit)commit block)
    • Ricompilare un indice che è calcolato colonne TIMESTAMP come colonne chiave.Rebuild an index that has computed or TIMESTAMP column(s) as key columns.
  • Nel caso in cui la tabella di base contiene colonne LOB ripristinabili cluster ricompilazione dell'indice richiede un blocco Sch-M all'inizio di questa operazioneIn case the base table contains LOB column(s) resumable clustered index rebuild requires a Sch-M lock in the Starting of this operation
    • L'opzione SORT_IN_TEMPDB = ON opzione non è supportata per l'indice può essere ripristinatoThe SORT_IN_TEMPDB=ON option is not supported for resumable index

Nota

Finché non viene completata, viene sospeso o non riesce, viene eseguito il comando DDL.The DDL command runs until it completes, pauses or fails. Nel caso in cui il comando mette in pausa, verrà generato un errore che indica che l'operazione è stata sospesa e che non ha completato la creazione dell'indice.In case the command pauses, an error will be issued indicating that the operation was paused and that the index creation did not complete. Per ottenere ulteriori informazioni sullo stato corrente dell'indice da sys.index_resumable_operations.More information about the current index status can be obtained from sys.index_resumable_operations. Come prima in caso di errore errore verrà generato anche.As before in case of a failure an error will be issued as well.

Per altre informazioni, vedere Perform Index Operations Online.For more information, see Perform Index Operations Online.

WAIT_AT_LOW_PRIORITY con operazioni sugli indici onlineWAIT_AT_LOW_PRIORITY with online index operations

Per eseguire l'istruzione DDL per una ricompilazione dell'indice online, è necessario completare tutte le transazioni bloccanti attive in esecuzione in una specifica tabella.In order to execute the DDL statement for an online index rebuild, all active blocking transactions running on a particular table must be completed. Quando la ricompilazione dell'indice online viene eseguita, blocca tutte le nuove transazioni pronte per l'esecuzione in questa tabella.When the online index rebuild executes, it blocks all new transactions that are ready to start execution on this table. Sebbene la durata del blocco della ricompilazione dell'indice online sia molto breve, l'attesa del completamento di tutte le transazioni aperte in una tabella specificata e il blocco dell'avvio di nuove transazioni potrebbero influire in modo significativo sulla velocità effettiva, provocando un rallentamento o un timeout del carico di lavoro e limitando notevolmente l'accesso alla tabella sottostante.Although the duration of the lock for online index rebuild is very short, waiting for all open transactions on a given table to complete and blocking the new transactions to start, might significantly affect the throughput, causing a workload slow down or timeout, and significantly limit access to the underlying table. Il WAIT_AT_LOW_PRIORITY opzione consente agli amministratori di gestire i blocchi di blocco S e Sch-M necessari per un indice online viene ricompilato e consente di selezionare una delle opzioni di 3.The WAIT_AT_LOW_PRIORITY option allows DBA's to manage the S-lock and Sch-M locks required for online index rebuilds and allows them to select one of 3 options. In tutti i casi di 3, se durante il tempo di attesa ( (MAX_DURATION = n [minutes]) ), non sono presenti attività di blocco, la ricompilazione dell'indice online viene eseguita immediatamente senza attendere e l'istruzione DDL è stata completata.In all 3 cases, if during the wait time ( (MAX_DURATION = n [minutes]) ), there are no blocking activities, the online index rebuild is executed immediately without waiting and the DDL statement is completed.

Restrizioni relative agli indici spazialiSpatial Index Restrictions

Quando si ricompila un indice spaziale, la tabella utente sottostante non è disponibile per tutta la durata dell'operazione sull'indice, in quanto l'indice spaziale acquisisce un blocco di schema.When you rebuild a spatial index, the underlying user table is unavailable for the duration of the index operation because the spatial index holds a schema lock.

Il vincolo PRIMARY KEY nella tabella utente non può essere modificato se in una colonna di tale tabella è definito un indice spaziale.The PRIMARY KEY constraint in the user table cannot be modified while a spatial index is defined on a column of that table. Per modificare il vincolo PRIMARY KEY, eliminare innanzitutto ogni indice spaziale dalla tabella.To change the PRIMARY KEY constraint, first drop every spatial index of the table. Dopo avere modificato il vincolo PRIMARY KEY, è possibile ricreare ognuno degli indici spaziali.After modifying the PRIMARY KEy constraint, you can re-create each of the spatial indexes.

In un'operazione di ricompilazione di una singola partizione, non è possibile specificare indici spaziali.In a single partition rebuild operation, you cannot specify any spatial indexes. È tuttavia possibile specificare indici spaziali in una ricompilazione di partizioni completa.However, you can specify spatial indexes in a complete partition rebuild.

Per modificare opzioni specifiche di un indice spaziale, ad esempio BOUNDING_BOX o GRID, è possibile utilizzare un'istruzione CREATE SPATIAL INDEX che specifica DROP_EXISTING = ON oppure eliminare l'indice spaziale e crearne un nuovo.To change options that are specific to a spatial index, such as BOUNDING_BOX or GRID, you can either use a CREATE SPATIAL INDEX statement that specifies DROP_EXISTING = ON, or drop the spatial index and create a new one. Per un esempio vedere CREATE SPATIAL INDEX (Transact-SQL).For an example, see CREATE SPATIAL INDEX (Transact-SQL).

Compressione dei datiData Compression

Per altre informazioni sulla compressione dei dati, vedere Compressione dei dati.For a more information about data compression, see Data Compression.

Per valutare come la compressione di pagina e riga modifica influirà su una tabella, un indice o una partizione, utilizzare il sp_estimate_data_compression_savings stored procedure.To evaluate how changing PAGE and ROW compression will affect a table, an index, or a partition, use the sp_estimate_data_compression_savings stored procedure.

Agli indici partizionati vengono applicate le restrizioni seguenti:The following restrictions apply to partitioned indexes:

  • Quando si utilizza ALTER INDEX ALL ..., non è possibile modificare l'impostazione di compressione di una singola partizione se la tabella include indici non allineati.When you use ALTER INDEX ALL ..., you cannot change the compression setting of a single partition if the table has nonaligned indexes.
  • L'istruzione ALTER INDEX <indice >... REBUILD PARTITION... consente di ricompilare la partizione specificata dell'indice.The ALTER INDEX <index> ... REBUILD PARTITION ... syntax rebuilds the specified partition of the index.
  • L'istruzione ALTER INDEX <indice >... REBUILD WITH ... consente di ricompilare tutte le partizioni dell'indice.The ALTER INDEX <index> ... REBUILD WITH ... syntax rebuilds all partitions of the index.

StatisticheStatistics

Quando si esegue ALTER INDEX ALL...When you execute ALTER INDEX ALL … in una tabella, vengono aggiornate solo le statistiche associate agli indici.on a table, only the statistics associates with indexes are updated. Le statistiche automatiche o manuali create sulla tabella, anziché su un indice, non vengono aggiornate.Automatic or manual statistics created on the table (instead of an index) are not updated.

AutorizzazioniPermissions

Per eseguire l'istruzione ALTER INDEX, è necessario disporre almeno dell'autorizzazione ALTER per la tabella o la vista.To execute ALTER INDEX, at a minimum, ALTER permission on the table or view is required.

Note sulla versioneVersion Notes

  • Database SQLSQL Databasenon utilizzare opzioni di filegroup e filestream. does not use filegroup and filestream options.
  • Gli indici ColumnStore non sono disponibili nelle versioni precedenti a SQL Server 2012SQL Server 2012.Columnstore indexes are not available prior to SQL Server 2012SQL Server 2012.
  • Operazioni sugli indici può essere ripristinato sono disponibili a partire dalla SQL Server 2017SQL Server 2017 e Database SQLSQL DatabaseResumable index operations are available Starting with SQL Server 2017SQL Server 2017 and Database SQLSQL Database

Esempio di sintassi di base:Basic syntax example:

ALTER INDEX index1 ON table1 REBUILD;  

ALTER INDEX ALL ON table1 REBUILD;  

ALTER INDEX ALL ON dbo.table1 REBUILD;  

Esempi: Gli indici ColumnstoreExamples: Columnstore Indexes

Questi esempi si applicano agli indici columnstore.These examples apply to columnstore indexes.

A.A. RIORGANIZZA demoREORGANIZE demo

Questo esempio viene illustrato come il comando ALTER INDEX REORGANIZE.This example demonstrates how the ALTER INDEX REORGANIZE command works. Crea una tabella che dispone di più gruppi di righe e quindi viene illustrata la modalità REORGANIZE unisce i rowgroup.It creates a table that has multiple rowgroups, and then demonstrates how REORGANIZE merges the rowgroups.

-- Create a database   
CREATE DATABASE [ columnstore ];  
GO  

-- Create a rowstore staging table  
CREATE TABLE [ staging ] (  
     AccountKey              int NOT NULL,  
     AccountDescription      nvarchar (50),  
     AccountType             nvarchar(50),  
     AccountCodeAlternateKey     int  
     )  

-- Insert 10 million rows into the staging table.   
DECLARE @loop int  
DECLARE @AccountDescription varchar(50)  
DECLARE @AccountKey int  
DECLARE @AccountType varchar(50)  
DECLARE @AccountCode int  

SELECT @loop = 0  
BEGIN TRAN  
    WHILE (@loop < 300000)   
      BEGIN  
        SELECT @AccountKey = CAST (RAND()*10000000 as int);  
        SELECT @AccountDescription = 'accountdesc ' + CONVERT(varchar(20), @AccountKey);  
        SELECT @AccountType = 'AccountType ' + CONVERT(varchar(20), @AccountKey);  
        SELECT @AccountCode =  CAST (RAND()*10000000 as int);  

        INSERT INTO  staging VALUES (@AccountKey, @AccountDescription, @AccountType, @AccountCode);  

        SELECT @loop = @loop + 1;  
    END  
COMMIT  

-- Create a table for the clustered columnstore index  

CREATE TABLE cci_target (  
     AccountKey              int NOT NULL,  
     AccountDescription      nvarchar (50),  
     AccountType             nvarchar(50),  
     AccountCodeAlternateKey int  
     )  

-- Convert the table to a clustered columnstore index named inxcci_cci_target;  
```sql
CREATE CLUSTERED COLUMNSTORE INDEX idxcci_cci_target ON cci_target;  

Utilizzare l'opzione TABLOCK per inserire righe in parallelo.Use the TABLOCK option to insert rows in parallel. A partire da SQL Server 2016SQL Server 2016, l'operazione di inserimento è possibile eseguire in parallelo quando TABLOCK.Starting with SQL Server 2016SQL Server 2016, the INSERT INTO operation can run in parallel when TABLOCK is used.

INSERT INTO cci_target WITH (TABLOCK) 
SELECT TOP 300000 * FROM staging;  

Eseguire questo comando per visualizzare i rowgroup delta aperto.Run this command to see the OPEN delta rowgroups. Il numero di rowgroup dipende dal grado di parallelismo.The number of rowgroups depends on the degree of parallelism.

SELECT *   
FROM sys.dm_db_column_store_row_group_physical_stats   
WHERE object_id  = object_id('cci_target');  

Eseguire questo comando per forzare tutti i rowgroup OPEN e CLOSED nel columnstore.Run this command to force all CLOSED and OPEN rowgroups into the columnstore.

ALTER INDEX idxcci_cci_target ON cci_target REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON);  

Eseguire nuovamente il comando per visualizzare più piccoli gruppi di righe vengono unite in un rowgroup compressi.Run this command again and you will see that smaller rowgroups are merged into one compressed rowgroup.

ALTER INDEX idxcci_cci_target ON cci_target REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON);  

B.B. Comprimere il rowgroup delta chiusi nel columnstoreCompress CLOSED delta rowgroups into the columnstore

Questo esempio viene utilizzata la RIORGANIZZAZIONE opzione comprime ogni rowgroup delta chiuso nel columnstore come un gruppo di righe compresso.This example uses the REORGANIZE option to compresses each CLOSED delta rowgroup into the columnstore as a compressed rowgroup. Non è necessaria, ma è utile quando il motore di tuple non sta comprimendo sufficientemente rapido dei rowgroup chiuso.This is not necessary, but is useful when the tuple-mover is not compressing CLOSED rowgroups fast enough.

-- Uses AdventureWorksDW  
-- REORGANIZE all partitions  
ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REORGANIZE;  

-- REORGANIZE a specific partition  
ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REORGANIZE PARTITION = 0;  

C.C. Comprimere tutti i rowgroup delta aperto e chiuso nel columnstoreCompress all OPEN AND CLOSED delta rowgroups into the columnstore

Non si applica a: SQL Server 2012SQL Server 2012 e SQL Server 2014SQL Server 2014Does not apply to: SQL Server 2012SQL Server 2012 and SQL Server 2014SQL Server 2014

A partire da SQL Server 2016SQL Server 2016, è possibile eseguire REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON) per comprimere ogni rowgroup delta aperto e chiuso in columnstore come un gruppo di righe compresso.Starting with SQL Server 2016SQL Server 2016, you can run REORGANIZE WITH ( COMPRESS_ALL_ROW_GROUPS = ON ) to compress each OPEN and CLOSED delta rowgroup into the columnstore as a compressed rowgroup. Questo Svuota il deltastore e forza tutte le righe per ottenere compressi nel columnstore.This empties the deltastores and forces all rows to get compressed into the columnstore. Ciò risulta utile in particolare dopo l'esecuzione di molte operazioni di inserimento poiché queste operazioni archiviano le righe di uno o più deltastore.This is useful especially after performing many insert operations since these operations store the rows in one or more deltastores.

REORGANIZE combina rowgroup per riempire i rowgroup fino a un numero massimo di righe <= 1,024,576.REORGANIZE combines rowgroups to fill rowgroups up to a maximum number of rows <= 1,024,576. Pertanto, quando si comprime tutti i rowgroup aperto e chiuso non alla fine si con un numero elevato di rowgroup compressi che hanno solo poche righe in esse contenuti.Therefore, when you compress all OPEN and CLOSED rowgroups you won't end up with lots of compressed rowgroups that only have a few rows in them. Si desidera rowgroup come complete possibile in modo da ridurre la dimensione compressa e migliorare le prestazioni delle query.You want rowgroups to be as full as possible to reduce the compressed size and improve query performance.

-- Uses AdventureWorksDW2016  
-- Move all OPEN and CLOSED delta rowgroups into the columnstore.  
ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ON);  

-- For a specific partition, move all OPEN AND CLOSED delta rowgroups into the columnstore  
ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REORGANIZE PARTITION = 0 WITH (COMPRESS_ALL_ROW_GROUPS = ON);  

D.D. Deframmentare un indice columnstore onlineDefragment a columnstore index online

Non si applica a: SQL Server 2012SQL Server 2012 e SQL Server 2014SQL Server 2014.Does not apply to: SQL Server 2012SQL Server 2012 and SQL Server 2014SQL Server 2014.

A partire da SQL Server 2016SQL Server 2016, REORGANIZE comprimere più rowgroup nel columnstore.Starting with SQL Server 2016SQL Server 2016, REORGANIZE does more than compress delta rowgroups into the columnstore. Esegue inoltre la deframmentazione in linea.It also performs online defragmentation. In primo luogo, riduce le dimensioni dell'archivio colonne rimuovendo le righe eliminate dopo aver eliminato più di 10% delle righe in un gruppo di righe.First, it reduces the size of the columnstore by physically removing deleted rows when 10% or more of the rows in a rowgroup have been deleted. Quindi, combina rowgroup per formare gruppi di righe più grande che è necessario il numero massimo di 1,024,576 righe per rowgroup.Then, it combines rowgroups together to form larger rowgroups that have up to the maximum of 1,024,576 rows per rowgroups. Tutti i gruppi di righe che sono stati modificati nuovamente compresse.All rowgroups that are changed get re-compressed.

Nota

A partire da SQL Server 2016SQL Server 2016, la ricompilazione di un indice columnstore non è più necessaria nella maggior parte dei casi perché REORGANIZE fisicamente rimuove le righe eliminate e unisce i gruppi di righe.Starting with SQL Server 2016SQL Server 2016, rebuilding a columnstore index is no longer necessary in most situations since REORGANIZE physically removes deleted rows and merges rowgroups. L'opzione COMPRESS_ALL_ROW_GROUPS forza tutti i rowgroup delta OPEN o CLOSED nel columnstore che in precedenza poteva essere eseguito solo con una ricompilazione.The COMPRESS_ALL_ROW_GROUPS option forces all OPEN or CLOSED delta rowgroups into the columnstore which previously could only be done with a rebuild. RIORGANIZZAZIONE è online e si verifica in background in modo che le query possono continuare quando viene eseguita l'operazione.REORGANIZE is online and occurs in the background so queries can continue as the operation happens.

-- Uses AdventureWorks  
-- Defragment by physically removing rows that have been logically deleted from the table, and merging rowgroups.  
ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REORGANIZE;  

E.E. Ricompilare un indice columnstore cluster non in lineaRebuild a clustered columnstore index offline

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2012SQL Server 2012)Applies to: SQL ServerSQL Server (Starting with SQL Server 2012SQL Server 2012)

Suggerimento

A partire da SQL Server 2016SQL Server 2016 e Database SQL di AzureAzure SQL Database, è consigliabile utilizzare ALTER INDEX REORGANIZE anziché l'istruzione ALTER INDEX REBUILD.Starting with SQL Server 2016SQL Server 2016 and in Database SQL di AzureAzure SQL Database, we recommend using ALTER INDEX REORGANIZE instead of ALTER INDEX REBUILD.

Nota

In SQL Server 2012SQL Server 2012 e SQL Server 2014SQL Server 2014, RIORGANIZZAZIONE viene usato solo per comprimere il rowgroup CLOSED nel columnstore.In SQL Server 2012SQL Server 2012 and SQL Server 2014SQL Server 2014, REORGANIZE is only used to compress CLOSED rowgroups into the columnstore. L'unico modo per eseguire operazioni di deframmentazione in linea e per forzare tutti i rowgroup in columnstore consiste nella ricompilazione dell'indice.The only way to perform defragmentation operations and to force all delta rowgroups into the columnstore is to rebuild the index.

In questo esempio viene illustrato come ricompilare un indice columnstore cluster e forzare tutti i rowgroup in columnstore.This example shows how to rebuild a clustered columnstore index and force all delta rowgroups into the columnstore. Il primo passaggio consiste nel preparare una tabella FactInternetSales2 con un indice columnstore cluster e nell'inserimento di dati dalle prime quattro colonne.This first step prepares a table FactInternetSales2 with a clustered columnstore index and inserts data from the first four columns.

-- Uses AdventureWorksDW  

CREATE TABLE dbo.FactInternetSales2 (  
    ProductKey [int] NOT NULL,   
    OrderDateKey [int] NOT NULL,   
    DueDateKey [int] NOT NULL,   
    ShipDateKey [int] NOT NULL);  

CREATE CLUSTERED COLUMNSTORE INDEX cci_FactInternetSales2  
ON dbo.FactInternetSales2;  

INSERT INTO dbo.FactInternetSales2  
SELECT ProductKey, OrderDateKey, DueDateKey, ShipDateKey  
FROM dbo.FactInternetSales;  

SELECT * FROM sys.column_store_row_groups;  

I risultati mostrano che è presente un rowgroup OPEN, ovvero SQL ServerSQL Server rimarrà in attesa di più righe da aggiungere prima della chiusura del rowgroup e sposta i dati columnstore.The results show there is one OPEN rowgroup, which means SQL ServerSQL Server will wait for more rows to be added before it closes the rowgroup and moves the data to the columnstore. Questa istruzione successiva si ricompila l'indice columnstore cluster, che impone a tutte le righe nel columnstore.This next statement rebuilds the clustered columnstore index, which forces all rows into the columnstore.

ALTER INDEX cci_FactInternetSales2 ON FactInternetSales2 REBUILD;  
SELECT * FROM sys.column_store_row_groups;  

I risultati dell'istruzione SELECT mostrano che il rowgroup è COMPRESSED, il che significa che i segmenti di colonna del rowgroup vengono compressi e archiviati nel columnstore.The results of the SELECT statement show the rowgroup is COMPRESSED, which means the column segments of the rowgroup are now compressed and stored in the columnstore.

F.F. Ricompilare una partizione di un indice columnstore cluster non in lineaRebuild a partition of a clustered columnstore index offline

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2012SQL Server 2012)Applies to: SQL ServerSQL Server (Starting with SQL Server 2012SQL Server 2012)

Per ricompilare una partizione di un indice columnstore cluster di grandi dimensioni, utilizzare ALTER INDEX REBUILD con l'opzione di partizione.To rebuild a partition of a large clustered columnstore index, use ALTER INDEX REBUILD with the partition option. Questo esempio viene ricompilato partizione 12.This example rebuilds partition 12. A partire da SQL Server 2016SQL Server 2016, si consiglia di sostituire RICOMPILAZIONE con REORGANIZE.Starting with SQL Server 2016SQL Server 2016, we recommend replacing REBUILD with REORGANIZE.

ALTER INDEX cci_fact3   
ON fact3  
REBUILD PARTITION = 12;  

G.G. Modificare un indice cluster per utilizzare la compressione dell'archivioChange a clustered columstore index to use archival compression

Non si applica a: SQL Server 2012SQL Server 2012Does not apply to: SQL Server 2012SQL Server 2012

È possibile scegliere di ridurre le dimensioni di un indice columnstore cluster ulteriormente tramite l'opzione di compressione dati COLUMNSTORE_ARCHIVE.You can choose to reduce the size of a clustered columnstore index even further by using the COLUMNSTORE_ARCHIVE data compression option. Si tratta di una pratica per i dati meno recenti che si desidera mantenere nell'archiviazione più economica.This is practical for older data that you want to keep on cheaper storage. È consigliabile solo utilizzando questo sui dati che non si accede spesso poiché decomprimere è più lenta con la compressione COLUMNSTORE normale.We recommend only using this on data that is not accessed often since decompress is slower than with the normal COLUMNSTORE compression.

Nell'esempio seguente viene ricompilato un indice columnstore cluster per l'utilizzo della compressione dell'archivio e viene illustrato come rimuovere tale compressione.The following example rebuilds a clustered columnstore index to use archival compression, and then shows how to remove the archival compression. Il risultato finale consisterà nell'utilizzo della sola compressione columnstore.The final result will use only columnstore compression.

--Prepare the example by creating a table with a clustered columnstore index.  
CREATE TABLE SimpleTable (  
    ProductKey [int] NOT NULL,   
    OrderDateKey [int] NOT NULL,   
    DueDateKey [int] NOT NULL,   
    ShipDateKey [int] NOT NULL  
);  

CREATE CLUSTERED INDEX cci_SimpleTable ON SimpleTable (ProductKey);  

CREATE CLUSTERED COLUMNSTORE INDEX cci_SimpleTable  
ON SimpleTable  
WITH (DROP_EXISTING = ON);  

--Compress the table further by using archival compression.  
ALTER INDEX cci_SimpleTable ON SimpleTable  
REBUILD  
WITH (DATA_COMPRESSION = COLUMNSTORE_ARCHIVE);  

--Remove the archive compression and only use columnstore compression.  
ALTER INDEX cci_SimpleTable ON SimpleTable  
REBUILD  
WITH (DATA_COMPRESSION = COLUMNSTORE);  
GO  

Esempi: Gli indici RowstoreExamples: Rowstore indexes

A.A. Ricompilazione di un indiceRebuilding an index

Nell'esempio seguente viene ricompilato un singolo indice della tabella Employee nel database AdventureWorks2012AdventureWorks2012.The following example rebuilds a single index on the Employee table in the AdventureWorks2012AdventureWorks2012 database.

ALTER INDEX PK_Employee_EmployeeID ON HumanResources.Employee REBUILD;  

B.B. Ricompilazione di tutti gli indici di una tabella e impostazione di opzioniRebuilding all indexes on a table and specifying options

Nell'esempio seguente viene specificata la parola chiave ALL.The following example specifies the keyword ALL. In questo modo vengono ricompilati tutti gli indici associati alla tabella Production.Product nel database AdventureWorks2012AdventureWorks2012.This rebuilds all indexes associated with the table Production.Product in the AdventureWorks2012AdventureWorks2012 database. Vengono inoltre specificate tre opzioni.Three options are specified.

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

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

Nell'esempio seguente viene aggiunta l'opzione ONLINE, inclusa l'opzione di blocco con priorità bassa, e viene aggiunta l'opzione di compressione di riga.The following example adds the ONLINE option including the low priority lock option, and adds the row compression option.

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2014SQL Server 2014) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2014SQL Server 2014) and Database SQLSQL Database.

ALTER INDEX ALL ON Production.Product  
REBUILD WITH   
(  
    FILLFACTOR = 80,   
    SORT_IN_TEMPDB = ON,  
    STATISTICS_NORECOMPUTE = ON,  
    ONLINE = ON ( WAIT_AT_LOW_PRIORITY ( MAX_DURATION = 4 MINUTES, ABORT_AFTER_WAIT = BLOCKERS ) ),   
    DATA_COMPRESSION = ROW  
);  

C.C. Ricompilazione di un indice con la compattazione di dati LOBReorganizing an index with LOB compaction

Nell'esempio seguente viene riorganizzato un singolo indice cluster nel database AdventureWorks2012AdventureWorks2012.The following example reorganizes a single clustered index in the AdventureWorks2012AdventureWorks2012 database. Poiché l'indice contiene un tipo di dati LOB al livello foglia, l'istruzione compatta inoltre tutte le pagine contenenti dati LOB.Because the index contains a LOB data type in the leaf level, the statement also compacts all pages that contain the large object data. Si noti che non è necessario specificare l'opzione WITH (LOB_COMPACTION) perché il valore predefinito è ON.Note that specifying the WITH (LOB_COMPACTION) option is not required because the default value is ON.

ALTER INDEX PK_ProductPhoto_ProductPhotoID ON Production.ProductPhoto REORGANIZE WITH (LOB_COMPACTION);  

D.D. Impostazione di opzioni per un indiceSetting options on an index

Nell'esempio seguente vengono impostate diverse opzioni per l'indice AK_SalesOrderHeader_SalesOrderNumber nel database AdventureWorks2012AdventureWorks2012.The following example sets several options on the index AK_SalesOrderHeader_SalesOrderNumber in the AdventureWorks2012AdventureWorks2012 database.

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2008SQL Server 2008) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2008SQL Server 2008) and Database SQLSQL Database.

ALTER INDEX AK_SalesOrderHeader_SalesOrderNumber ON  
    Sales.SalesOrderHeader  
SET (  
    STATISTICS_NORECOMPUTE = ON,  
    IGNORE_DUP_KEY = ON,  
    ALLOW_PAGE_LOCKS = ON  
    ) ;  
GO

E.E. Disabilitazione di un indiceDisabling an index

Nell'esempio seguente viene disabilitato un indice non cluster della tabella Employee nel database AdventureWorks2012AdventureWorks2012.The following example disables a nonclustered index on the Employee table in the AdventureWorks2012AdventureWorks2012 database.

ALTER INDEX IX_Employee_ManagerID ON HumanResources.Employee DISABLE;

F.F. Disabilitazione dei vincoliDisabling constraints

Nell'esempio seguente viene disabilitato un vincolo PRIMARY KEY disabilitando l'indice di chiave primaria nel AdventureWorks2012AdventureWorks2012 database.The following example disables a PRIMARY KEY constraint by disabling the PRIMARY KEY index in the AdventureWorks2012AdventureWorks2012 database. Il vincolo FOREIGN KEY della tabella sottostante viene disabilitato automaticamente e viene visualizzato un messaggio di avviso.The FOREIGN KEY constraint on the underlying table is automatically disabled and warning message is displayed.

ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department DISABLE;  

Nel set di risultati viene restituito il messaggio di avviso seguente.The result set returns this warning message.

Warning: Foreign key 'FK_EmployeeDepartmentHistory_Department_DepartmentID'  
on table 'EmployeeDepartmentHistory' referencing table 'Department'  
was disabled as a result of disabling the index 'PK_Department_DepartmentID'.

G.G. Abilitazione di vincoliEnabling constraints

Nell'esempio seguente vengono abilitati i vincoli PRIMARY KEY e FOREIGN KEY disabilitati nell'esempio F.The following example enables the PRIMARY KEY and FOREIGN KEY constraints that were disabled in Example F.

Il vincolo PRIMARY KEY viene abilitato tramite la ricompilazione dell'indice PRIMARY KEY.The PRIMARY KEY constraint is enabled by rebuilding the PRIMARY KEY index.

ALTER INDEX PK_Department_DepartmentID ON HumanResources.Department REBUILD;  

Viene quindi abilitato il vincolo FOREIGN KEY.The FOREIGN KEY constraint is then enabled.

ALTER TABLE HumanResources.EmployeeDepartmentHistory  
CHECK CONSTRAINT FK_EmployeeDepartmentHistory_Department_DepartmentID;  
GO  

H.H. Ricompilazione di un indice partizionatoRebuilding a partitioned index

Nell'esempio seguente viene ricompilata una singola partizione, con numero 5, dell'indice partizionato IX_TransactionHistory_TransactionDate nel database AdventureWorks2012AdventureWorks2012.The following example rebuilds a single partition, partition number 5, of the partitioned index IX_TransactionHistory_TransactionDate in the AdventureWorks2012AdventureWorks2012 database. La partizione 5 viene ricompilata online e il tempo di attesa di 10 minuti per il blocco con priorità bassa viene applicato separatamente a ogni blocco acquisito dall'operazione di ricompilazione dell'indice.Partition 5 is rebuilt online and the 10 minutes wait time for the low priority lock applies separately to every lock acquired by index rebuild operation. Se durante questo periodo di tempo non è possibile ottenere il blocco per completare la ricompilazione dell'indice, l'istruzione dell'operazione di ricompilazione viene interrotta.If during this time the lock cannot be obtained to complete index rebuild, the rebuild operation statement is aborted.

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2014SQL Server 2014) e Database SQLSQL Database.Applies to: SQL ServerSQL Server (Starting with SQL Server 2014SQL Server 2014) and Database SQLSQL Database.

-- Verify the partitioned indexes.  
SELECT *  
FROM sys.dm_db_index_physical_stats (DB_ID(),OBJECT_ID(N'Production.TransactionHistory'), NULL , NULL, NULL);  
GO  
--Rebuild only partition 5.  
ALTER INDEX IX_TransactionHistory_TransactionDate  
ON Production.TransactionHistory  
REBUILD Partition = 5   
   WITH (ONLINE = ON (WAIT_AT_LOW_PRIORITY (MAX_DURATION = 10 minutes, ABORT_AFTER_WAIT = SELF)));  
GO  

I.I. Modifica dell'impostazione di compressione di un indiceChanging the compression setting of an index

Nell'esempio seguente viene ricompilato un indice in una tabella rowstore non partizionata.The following example rebuilds an index on a nonpartitioned rowstore table.

ALTER INDEX IX_INDEX1   
ON T1  
REBUILD   
WITH (DATA_COMPRESSION = PAGE);  
GO  

Per esempi sulla compressione dei dati aggiuntivi, vedere la compressione dei dati.For additional data compression examples, see Data Compression.

J.J. Ricompilazione dell'indice può essere ripristinato onlineOnline resumable index rebuild

Si applica a: SQL ServerSQL Server (a partire da SQL Server 2017SQL Server 2017) e Database SQLSQL DatabaseApplies to: SQL ServerSQL Server (Starting with SQL Server 2017SQL Server 2017) and Database SQLSQL Database

Negli esempi seguenti viene illustrato come utilizzare la ricostruzione dell'indice può essere ripristinato in linea.The following examples show how to use online resumable index rebuild.

  1. Eseguire una ricompilazione dell'indice online come operazione può essere ripristinato con MAXDOP = 1.Execute an online index rebuild as resumable operation with MAXDOP=1.

    ALTER INDEX test_idx on test_table REBUILD WITH (ONLINE=ON, MAXDOP=1, RESUMABLE=ON) ;
    
  2. Eseguire lo stesso comando nuovamente (vedere sopra) dopo un'operazione di indice è stata sospesa, riprende automaticamente l'operazione di ricompilazione dell'indice.Executing the same command again (see above) after an index operation was paused, resumes automatically the index rebuild operation.

  3. Eseguire una ricompilazione dell'indice online come operazione può essere ripristinato con MAX_DURATION è impostata su 240 minuti.Execute an online index rebuild as resumable operation with MAX_DURATION set to 240 minutes.

    ALTER INDEX test_idx on test_table REBUILD WITH (ONLINE=ON, RESUMABLE=ON, MAX_DURATION=240) ; 
    
  4. Sospendere una ricompilazione dell'indice online in esecuzione può essere ripristinato.Pause a running resumable online index rebuild.

    ALTER INDEX test_idx on test_table PAUSE ;
    
  5. Riprendere una ricompilazione dell'indice online per la ricompilazione di un indice che è stata eseguita come operazione può essere ripristinato specificando un nuovo valore per MAXDOP è impostato su 4.Resume an online index rebuild for an index rebuild that was executed as resumable operation specifying a new value for MAXDOP set to 4.

    ALTER INDEX test_idx on test_table RESUME WITH (MAXDOP=4) ;
    
  6. Ripresa di un'operazione di ricompilazione indice online per una ricompilazione dell'indice online che è stata eseguita come ripristinabile.Resume an online index rebuild operation for an index online rebuild that was executed as resumable. Impostare MAXDOP su 2, il tempo di esecuzione per l'indice in esecuzione come resmumable e 240 minuti e in caso di un indice viene bloccato in attesa di blocco 10 minuti e dopo che tutti i blocchi di terminare.Set MAXDOP to 2, set the execution time for the index being running as resmumable to 240 minutes and in case of an index being blocked on the lock wait 10 minutes and after that kill all blockers.

       ALTER INDEX test_idx on test_table  
          RESUME WITH (MAXDOP=2, MAX_DURATION= 240 MINUTES, 
          WAIT_AT_LOW_PRIORITY (MAX_DURATION=10, ABORT_AFTER_WAIT=BLOCKERS)) ;
    
  7. Interrompere l'operazione di ricompilazione dell'indice può essere ripristinato che è in esecuzione o sospesa.Abort resumable index rebuild operation which is running or paused.

    ALTER INDEX test_idx on test_table ABORT ;
    

Vedere ancheSee Also

CREATE INDEX (Transact-SQL) CREATE INDEX (Transact-SQL)
CREATE SPATIAL INDEX ( Transact-SQL ) CREATE SPATIAL INDEX (Transact-SQL)
CREATE XML INDEX ( Transact-SQL ) CREATE XML INDEX (Transact-SQL)
DROP INDEX ( Transact-SQL ) DROP INDEX (Transact-SQL)
Disabilitazione di indici e vincoli Disable Indexes and Constraints
Indici XML (SQL Server) XML Indexes (SQL Server)
Eseguire operazioni sugli indici Online Perform Index Operations Online
Riorganizzare e ricompilare gli indici Reorganize and Rebuild Indexes
sys.dm_db_index_physical_stats (Transact-SQL) sys.dm_db_index_physical_stats (Transact-SQL)
EVENTDATA (Transact-SQL)EVENTDATA (Transact-SQL)