Creare indici con colonne incluse
In questo argomento si illustra come aggiungere colonne incluse (o non chiave) per estendere la funzionalità di indici non cluster in SQL Server 2012 tramite SQL Server Management Studio o Transact-SQL. Con l'inclusione di colonne non chiave è possibile creare indici non cluster in grado di coprire più query. Ciò è possibile perché le colonne non chiave presentano i vantaggi seguenti:
Possono essere tipi di dati che non sono consentiti come colonne chiave indice.
Non vengono prese in esame dal Motore di database durante il calcolo del numero di colonne chiave indice o della dimensione delle chiavi di indice.
Con un indice con colonne non chiave è possibile aumentare significativamente le prestazioni delle query quando tutte le relative colonne sono incluse nell'indice come colonne chiave o non chiave. I vantaggi nelle prestazioni si ottengono poiché in Query Optimizer è possibile individuare tutti i valori delle colonne all'interno dell'indice. In questo modo, la quantità di operazioni di I/O su disco è inferiore dato che non viene eseguito alcun accesso ai dati delle tabelle o degli indici cluster.
[!NOTA]
Quando in un indice sono contenute tutte le colonne a cui fa riferimento una query, viene generalmente indicato come copertura della query.
Contenuto dell'argomento
Prima di iniziare:
Consigli sulla progettazione
Limitazioni e restrizioni
Sicurezza
Per creare un indice con colonne non chiave utilizzando:
SQL Server Management Studio
Transact-SQL
Prima di iniziare
Consigli sulla progettazione
Progettare nuovamente gli indici non cluster con chiavi di indice dalle dimensioni elevate in modo da utilizzare come colonne chiave solo le colonne utilizzate per le ricerche. Modificare in colonne non chiave tutte le altre colonne che coprono la query. In questo modo si avranno tutte le colonne necessarie per coprire la query, contenendo al tempo stesso le dimensioni della chiave dell'indice e mantenendone l'efficienza.
Includere colonne non chiave in un indice non cluster per evitare il superamento delle limitazioni di dimensione correnti degli indici (numero massimo di colonne chiave pari a 16 e dimensione massima delle chiavi di indice pari a 900 byte). Le colonne non chiave non vengono utilizzate nel Motore di database durante il calcolo del numero di colonne chiave indice o della dimensione delle chiavi di indice.
Limitazioni e restrizioni
Le colonne non chiave possono essere definite solo negli indici non cluster.
È possibile utilizzare come colonne non chiave tutti i tipi di dati eccetto text, ntext e image .
Le colonne calcolate deterministiche, precise o imprecise, possono essere colonne non chiave. Per ulteriori informazioni, vedere Indici per le colonne calcolate.
Le colonne calcolate derivate dai tipi di dati image, ntext e text possono essere colonne non chiave purché il tipo di dati della colonna calcolata sia consentito come colonna non chiave dell'indice.
Non è possibile rimuovere da una tabella le colonne non chiave se non si è prima eliminato l'indice di questa tabella.
Non è possibile modificare le colonne non chiave se non per effettuare le operazioni seguenti:
Modifica del supporto di valori NULL della colonna da NOT NULL a NULL.
Aumento della lunghezza di colonne varchar, nvarchar o varbinary.
Sicurezza
Autorizzazioni
È richiesta l'autorizzazione ALTER per la tabella o la vista. L'utente deve essere un membro del ruolo predefinito del server sysadmin o dei ruoli predefiniti del database db_ddladmin e db_owner.
[Top]
Utilizzo di SQL Server Management Studio
Per creare un indice con colonne non chiave
In Esplora oggetti fare clic sul segno più per espandere il database contenente la tabella in cui si desidera creare un indice con colonne non chiave.
Fare clic sul segno più per espandere la cartella Tabelle.
Fare clic sul segno più per espandere la tabella in cui si desidera creare un indice con colonne non chiave.
Fare clic con il pulsante destro del mouse sulla cartella Indici, scegliere Nuovo indice e selezionare Indice non cluster.
Nella pagina Generale della finestra di dialogo Nuovo indice immettere il nome del nuovo indice nella casella Nome indice.
Nella scheda Colonne chiave indice scegliere Aggiungi.
Nella finestra di dialogo Seleziona colonne da table_name selezionare le caselle di controllo delle colonne della tabella da aggiungere all'indice.
Scegliere OK.
Nella scheda Colonne incluse scegliere Aggiungi.
Nella finestra di dialogo Seleziona colonne da table_name selezionare le caselle di controllo delle colonne della tabella da aggiungere all'indice come colonne non chiave.
Scegliere OK.
Nella finestra di dialogo Nuovo indice fare clic su OK.
[Top]
Utilizzo di Transact-SQL
Per creare un indice con colonne non chiave
In Esplora oggetti connettersi a un'istanza del Motore di database.
Sulla barra Standard fare clic su Nuova query.
Copiare e incollare l'esempio seguente nella finestra Query, quindi fare clic su Esegui.
USE AdventureWorks2012; GO -- Creates a nonclustered index on the Person.Address table with four included (nonkey) columns. -- index key column is PostalCode and the nonkey columns are -- AddressLine1, AddressLine2, City, and StateProvinceID. CREATE NONCLUSTERED INDEX IX_Address_PostalCode ON Person.Address (PostalCode) INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID); GO
Per ulteriori informazioni, vedere CREATE INDEX (Transact-SQL).
[Top]