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.

Fattore di riempimento

FILLFACTOR

Imposta la percentuale di spazio libero nel livello foglia di ogni pagina dell'indice durante la creazione dell'indice.

Fattore di riempimento

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.

NotaNota
Se un'operazione di ordinamento non è necessaria o può essere eseguita in memoria, l'opzione SORT_IN_TEMPDB viene ignorata.

No

tempdb e creazione dell'indice

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.

CREATE INDEX

STATISTICS_NORECOMPUTE

Specifica se le statistiche dell'indice non aggiornate devono essere ricalcolate automaticamente.

Statistiche dell'indice

DROP_EXISTING

Indica che l'indice esistente deve essere eliminato e ricreato.

No

Riorganizzazione e ricostruzione degli indici

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.

NotaNota
Le operazioni sugli indici in linea sono disponibili solo nelle edizioni Enterprise, Developer ed Evaluation di SQL Server.

No

Esecuzione di operazioni in linea su indici

ALLOW_ROW_LOCKS

Determina se per l'accesso ai dati dell'indice vengono utilizzati i blocchi di riga.

CREATE INDEX

Personalizzazione dei blocchi per un indice

ALLOW_PAGE_LOCKS

Determina se per l'accesso ai dati dell'indice vengono utilizzati i blocchi di pagina.

CREATE INDEX

Personalizzazione dei blocchi per un indice

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.

NotaNota
Le operazioni parallele sugli indici sono disponibili solo nelle edizioni Enterprise, Developer ed Evaluation di SQL Server.

No

Modifica degli indici

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.

Creazione di tabelle e di indici compressi

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