Condividi tramite


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.

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Utilizzo di SQL Server Management Studio

Per creare un indice non cluster tramite Progettazione tabelle

  1. In Esplora oggetti espandere il database contenente la tabella in cui si desidera creare un indice non cluster.

  2. Espandere la cartella Tabelle.

  3. Fare clic con il pulsante destro del mouse sulla tabella in cui si desidera creare un indice non cluster e selezionare Progetta.

  4. Scegliere Indici/chiavi nel menu Progettazione tabelle.

  5. Nella finestra di dialogo Indici/chiavi fare clic su Aggiungi.

  6. Selezionare il nuovo indice dalla casella di testo Indice o chiave primari/univoci selezionati.

  7. Nella griglia selezionare Crea come CLUSTERED, quindi scegliere No dall'elenco a discesa a destra della proprietà.

  8. Scegliere Chiudi.

  9. Scegliere Salva dal menu File table_name.

Per creare un indice non cluster tramite Esplora oggetti

  1. In Esplora oggetti espandere il database contenente la tabella in cui si desidera creare un indice non cluster.

  2. Espandere la cartella Tabelle.

  3. Espandere la tabella in cui si desidera creare un indice non cluster.

  4. Fare clic con il pulsante destro del mouse sulla cartella Indici, scegliere Nuovo indice e selezionare Indice non cluster.

  5. Nella pagina Generale della finestra di dialogo Nuovo indice immettere il nome del nuovo indice nella casella Nome indice.

  6. In Colonne chiave indice fare clic su Aggiungi.

  7. Nella finestra di dialogo Seleziona colonne da table_name selezionare le caselle di controllo delle colonne della tabella da aggiungere all'indice non cluster.

  8. Scegliere OK.

  9. Nella finestra di dialogo Nuovo indice fare clic su OK.

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]

Utilizzo di Transact-SQL

Per creare un indice non cluster in una tabella

  1. In Esplora oggetti connettersi a un'istanza del Motore di database.

  2. Sulla barra Standard fare clic su Nuova query.

  3. 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).

Icona freccia utilizzata con il collegamento Torna all'inizio[Top]