Creare indici non cluster
È possibile creare indici non cluster in SQL Server 2012 utilizzando SQL Server Management Studio o Transact-SQL. Un indice non cluster è una struttura di indice separata dai dati archiviati in una tabella che riordina una o più colonne selezionate. Spesso gli indici non cluster consentono di trovare i dati più rapidamente rispetto alla ricerca nella tabella sottostante. Le query talvolta possono ottenere risposta unicamente mediante i dati presenti nell'indice non cluster oppure l'indice non cluster può puntare il Motore di database alle righe nella tabella sottostante. Gli indici non cluster vengono creati generalmente per migliorare le prestazioni delle query di utilizzo frequente non coperte dall'indice cluster oppure per individuare le righe in una tabella senza un indice cluster (denominato heap). In una tabella o in una vista indicizzata è possibile creare più indici non cluster.
Contenuto dell'argomento
Prima di iniziare:
Modalità di implementazione tipiche
Sicurezza
Per creare un indice non cluster tramite:
SQL Server Management Studio
Transact-SQL
Prima di iniziare
Modalità di implementazione tipiche
Gli indici non cluster vengono implementati nei modi seguenti:
Vincoli UNIQUE
Quando si crea un vincolo UNIQUE, viene creato un indice non cluster univoco per applicare 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 UNIQUE e CHECK.
Indice indipendente da un vincolo
Per impostazione predefinita, viene creato un indice non cluster se non è stato specificato l'indice cluster. Il numero massimo di indici non cluster che è possibile creare per tabella è 999. Sono inclusi gli indici creati tramite i vincoli PRIMARY KEY o UNIQUE, ma non 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.
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 non cluster tramite Progettazione tabelle
In Esplora oggetti espandere il database contenente la tabella in cui si desidera creare un indice non cluster.
Espandere la cartella Tabelle.
Fare clic con il pulsante destro del mouse sulla tabella in cui si desidera creare un indice non cluster e selezionare Progetta.
Scegliere Indici/chiavi nel menu Progettazione tabelle.
Nella finestra di dialogo Indici/chiavi fare clic su Aggiungi.
Selezionare il nuovo indice dalla casella di testo Indice o chiave primari/univoci selezionati.
Nella griglia selezionare Crea come CLUSTERED, quindi scegliere No dall'elenco a discesa a destra della proprietà.
Scegliere Chiudi.
Scegliere Salva dal menu File table_name.
Per creare un indice non cluster tramite Esplora oggetti
In Esplora oggetti espandere il database contenente la tabella in cui si desidera creare un indice non cluster.
Espandere la cartella Tabelle.
Espandere la tabella in cui si desidera creare un indice non cluster.
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.
In Colonne chiave indice fare clic su Aggiungi.
Nella finestra di dialogo Seleziona colonne da table_name selezionare le caselle di controllo delle colonne della tabella da aggiungere all'indice non cluster.
Scegliere OK.
Nella finestra di dialogo Nuovo indice fare clic su OK.
[Top]
Utilizzo di Transact-SQL
Per creare un indice non cluster in una tabella
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 -- Find an existing index named IX_ProductVendor_VendorID and delete it if found. IF EXISTS (SELECT name FROM sys.indexes WHERE name = N'IX_ProductVendor_VendorID') DROP INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor; GO -- Create a nonclustered index called IX_ProductVendor_VendorID -- on the Purchasing.ProductVendor table using the BusinessEntityID column. CREATE NONCLUSTERED INDEX IX_ProductVendor_VendorID ON Purchasing.ProductVendor (BusinessEntityID); GO
Per ulteriori informazioni, vedere CREATE INDEX (Transact-SQL).
[Top]