Impostazione delle opzioni di un indice
Per la progettazione, la creazione o la modifica di un indice sono disponibili numerose opzioni, che possono essere specificate al momento della creazione o della ricostruzione dell'indice. Alcune opzioni dell'indice possono inoltre essere impostate in qualsiasi momento tramite la clausola SET dell'istruzione ALTER INDEX.
Opzione dell'indice |
Descrizione |
Impostazione archiviata nei metadati |
Argomento correlato |
---|---|---|---|
PAD_INDEX |
Imposta la percentuale di spazio libero nelle pagine di livello intermedio durante la creazione dell'indice. |
Sì |
|
FILLFACTOR |
Imposta la percentuale di spazio libero nel livello foglia di ogni pagina dell'indice durante la creazione dell'indice. |
Sì |
|
SORT_IN_TEMPDB |
Determina la posizione in cui verranno archiviati i risultati intermedi dell'ordinamento generati durante la creazione dell'indice. Se l'opzione è impostata su ON, i risultati vengono archiviati in tempdb. Se è impostata su OFF, i risultati vengono archiviati nel filegroup o nello schema di partizione in cui è archiviato l'indice risultante.
Nota
Se un'operazione di ordinamento non è necessaria o può essere eseguita in memoria, l'opzione SORT_IN_TEMPDB viene ignorata.
|
No |
|
IGNORE_DUP_KEY |
Specifica l'errore restituito quando un'operazione di inserimento tenta di inserire valori di chiave duplicati in un indice univoco. L'opzione IGNORE_DUP_KEY viene applicata solo alle operazioni di inserimento eseguite dopo la creazione o la ricostruzione dell'indice. Il valore predefinito è OFF. |
Sì |
|
STATISTICS_NORECOMPUTE |
Specifica se le statistiche dell'indice non aggiornate devono essere ricalcolate automaticamente. |
Sì |
|
DROP_EXISTING |
Indica che l'indice esistente deve essere eliminato e ricreato. |
No |
|
ONLINE |
Determina se durante le operazioni sull'indice è consentito a più utenti di accedere simultaneamente ai dati delle tabelle o degli indici cluster sottostanti e agli indici non cluster associati.
Nota
Le operazioni sugli indici in linea sono disponibili solo nelle edizioni Enterprise, Developer ed Evaluation di SQL Server.
|
No |
|
ALLOW_ROW_LOCKS |
Determina se per l'accesso ai dati dell'indice vengono utilizzati i blocchi di riga. |
Sì |
|
ALLOW_PAGE_LOCKS |
Determina se per l'accesso ai dati dell'indice vengono utilizzati i blocchi di pagina. |
Sì |
|
MAXDOP |
Imposta il numero massimo di processori utilizzabili da Query Processor per eseguire una singola istruzione sull'indice. È possibile utilizzare un numero inferiore di processori in base al carico di lavoro corrente del sistema.
Nota
Le operazioni parallele sugli indici sono disponibili solo nelle edizioni Enterprise, Developer ed Evaluation di SQL Server.
|
No |
|
DATA_COMPRESSION |
Specifica l'opzione di compressione dei dati per la tabella, il numero di partizione o l'intervallo di partizioni specificato. Le opzioni sono NONE, ROW e PAGE. |
Sì |
Per impostare le opzioni in un indice
Impostazione di opzioni senza ricostruzione dell'indice
Tramite la clausola SET dell'istruzione ALTER INDEX è possibile impostare le opzioni dell'indice seguenti senza ricostruire l'indice:
ALLOW_PAGE_LOCKS
ALLOW_ROW_LOCKS
IGNORE_DUP_KEY
STATISTICS_NORECOMPUTE
Queste opzioni vengono applicate immediatamente all'indice. Altre opzioni, ad esempio FILLFACTOR e ONLINE, possono essere specificate unicamente durante la creazione o la ricostruzione di un indice.
Visualizzazione delle impostazioni relative alle opzioni dell'indice
Non tutti i valori delle opzioni dell'indice vengono archiviati nei metadati. I valori archiviati nei metadati possono essere visualizzati nelle viste del catalogo appropriate. Per esaminare i valori correnti delle opzioni dell'indice, utilizzare la vista del catalogo sys.indexes. Per esaminare il valore corrente di STATISTICS_NORECOMPUTE, utilizzare la vista del catalogo sys.stats. Per ulteriori informazioni, vedere Visualizzazione delle informazioni relative agli indici.
Esempi
Nell'esempio seguente vengono impostate le opzioni ALLOW_ROW_LOCKS e IGNORE_DUP_KEY dell'indice AK_Product_ProductNumber nella tabella Production.Product.
USE AdventureWorks;
GO
--Verify the current values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes
WHERE name = N'AK_Product_ProductNumber';
GO
--Set the ALLOW_ROW_LOCKS option OFF and the IGNORE_DUP_KEY option ON.
ALTER INDEX AK_Product_ProductNumber
ON Production.Product
SET (ALLOW_ROW_LOCKS = OFF, IGNORE_DUP_KEY = ON);
GO
--Verify the new values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes
WHERE name = N'AK_Product_ProductNumber';
GO
Vedere anche