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. ![]()
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. ![]()
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. ![]()
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