Condividi tramite


Creazione di indici non cluster

In una tabella o in una vista indicizzata è possibile creare più indici non cluster. Gli indici non cluster vengono creati generalmente per migliorare le prestazioni delle query di utilizzo frequente non coperte dall'indice cluster.

Implementazioni tipiche

Gli indici non cluster vengono implementati nei modi seguenti:

  • Vincoli PRIMARY KEY e UNIQUE
    Quando si crea un vincolo PRIMARY KEY, se nella tabella non è già presente un indice cluster e l'utente non specifica un indice non cluster univoco, sulle colonne viene creato automaticamente un indice cluster univoco. La colonna chiave primaria non può supportare i valori NULL.
    Quando si crea un vincolo UNIQUE, viene creato un indice cluster univoco per imporre un vincolo UNIQUE per impostazione predefinita. È possibile specificare un indice cluster univoco se nella tabella non ne esiste già uno. Per ulteriori informazioni, vedere Vincoli PRIMARY KEY e Vincoli UNIQUE.
  • Indice indipendente da un vincolo
    Per impostazione predefinita, viene creato un indice non cluster se non è stato specificato l'indice cluster. È possibile creare al massimo 249 indici non cluster per tabella, inclusi gli indici creati dai vincoli PRIMARY KEY o UNIQUE, ma esclusi gli indici XML.
  • Indice non cluster su una vista indicizzata
    Dopo la creazione di un indice cluster univoco su una vista, è possibile creare indici non cluster. Per ulteriori informazioni, vedere Creazione di viste indicizzate.

Indice con colonne incluse

Quando si crea un indice non cluster per coprire una query, è possibile includere nella definizione dell'indice colonne non chiave, per la copertura delle colonne della query non utilizzate come colonne primarie per la ricerca. Ciò consente di ottenere miglioramenti delle prestazioni, perché Query Optimizer è in grado di individuare tutti i dati di colonna necessari nell'indice. L'accesso alla tabella o all'indice cluster non viene effettuato. Per ulteriori informazioni, vedere Indice con colonne incluse.

Requisiti di spazio su disco

Per informazioni sui requisiti di spazio su disco degli indici non cluster, vedere Individuazione dei requisiti di spazio su disco per gli indici.

Considerazioni sulle prestazioni

Sebbene sia importante che l'indice contenga tutte le colonne utilizzate dalla query, l'aggiunta di colonne non necessarie va evitata. L'aggiunta di troppe colonne di indice, chiave o non chiave, può avere le conseguenze seguenti sulle prestazioni:

  • Ogni pagina conterrà un numero minore di righe di indice, con un aumento dell' I/O su disco e una riduzione dell'efficienza della cache.
  • Per l'archiviazione dell'indice sarà necessario più spazio su disco.
  • La manutenzione dell'indice può aumentare il tempo necessario all'esecuzione di modifiche, inserimenti, aggiornamenti o eliminazioni nella tabella o nella vista indicizzata sottostante.

Si consiglia di determinare se i miglioramenti nella prestazione della query compensano gli effetti sulle prestazioni durante la modifica dei dati e in termini di requisiti di spazio su disco. Per ulteriori informazioni sulla valutazione delle prestazioni delle query, vedere Ottimizzazione delle query.

Per creare un vincolo PRIMARY KEY o UNIQUE in fase di creazione di una tabella

CREATE TABLE (Transact-SQL)

Per creare un vincolo PRIMARY KEY o UNIQUE in una tabella esistente

ALTER TABLE (Transact-SQL)

Per creare un indice

CREATE INDEX (Transact-SQL)

Vedere anche

Concetti

Creazione di indici (Motore di database)
Linee guida per la progettazione di un indice non cluster

Guida in linea e informazioni

Assistenza su SQL Server 2005