Erstellen nicht gruppierter Indizes

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance

Sie können nicht gruppierte Indizes in SQL Server mithilfe von SQL Server Management Studio oder Transact-SQL erstellen. Ein nicht gruppierter Index ist eine von den in einer Tabelle gespeicherten Daten getrennte Indexstruktur, durch die ausgewählte Spalten neu angeordnet werden. Nicht gruppierte Indizes können Ihnen häufig helfen, Daten schneller zu finden, als die zugrunde liegende Tabelle zu durchsuchen; Abfragen können manchmal vollständig von den Daten im nicht gruppierten Index beantwortet werden, oder der nicht gruppierte Index kann die Datenbank-Engine auf die Zeilen in der zugrunde liegenden Tabelle verweisen. Im Allgemeinen werden nicht gruppierte Indizes erstellt, um die Leistung von häufig verwendeten Abfragen zu verbessern, die nicht vom gruppierten Index abgedeckt werden, oder Zeilen in einer Tabelle ohne gruppierten Index (als Heap bezeichnet) zu suchen. Sie können mehrere nicht gruppierte Indizes für eine Tabelle oder eine indizierte Sicht erstellen.

Voraussetzungen

Typische Implementierungen

Nicht gruppierte Indizes werden auf folgende Weise implementiert:

  • UNIQUE-Einschränkungen

    Wenn Sie eine UNIQUE-Einschränkung erstellen, wird ein eindeutiger nicht gruppierter Index erstellt, um standardmäßig eine UNIQUE-Einschränkung zu erzwingen. Sie können einen eindeutigen gruppierten Index angeben, wenn noch kein gruppierter Index für die Tabelle vorhanden ist. Weitere Informationen finden Sie unter Unique Constraints and Check Constraints.

  • Index unabhängig von einer Einschränkung

    Wenn der gruppierte Index nicht angegeben wird, wird standardmäßig ein nicht gruppierter Index erstellt. Die maximale Anzahl nicht gruppierter Indizes, die pro Tabelle erstellt werden können, beträgt 999. Dies schließt alle Indizes ein, die durch PRIMARY KEY- oder UNIQUE-Einschränkungen erstellt wurden, jedoch keine XML-Indizes.

  • Nicht gruppierter Index für eine indizierte Sicht

    Nachdem ein eindeutiger gruppierter Index für eine Sicht erstellt wurde, können nicht gruppierte Indizes erstellt werden. Weitere Informationen finden Sie unter Erstellen von indizierten Ansichten.

Sicherheit

Berechtigungen

Erfordert die ALTER-Berechtigung in der Tabelle oder Sicht. Der Benutzer muss ein Mitglied der festen Serverrolle sysadmin bzw. der festen Datenbankrollen db_ddladmin und db_owner sein.

Verwendung von SQL Server Management Studio

So erstellen Sie einen nicht gruppierten Index mit dem Tabellen-Designer

  1. Erweitern Sie im Objekt-Explorer die Datenbank mit der Tabelle, für die Sie einen nicht gruppierten Index erstellen möchten.

  2. Erweitern Sie den Ordner Tabellen .

  3. Klicken Sie mit der rechten Maustaste auf die Tabelle, für die Sie einen nicht gruppierten Index erstellen möchten, und wählen Sie Entwurfaus.

  4. Klicken Sie mit der rechten Maustaste auf die Spalte, für die Sie den nicht gruppierten Index erstellen möchten, und wählen Sie Indizes/Schlüssel aus.

  5. Klicken Sie im Dialogfeld Indizes/Schlüssel auf Hinzufügen.

  6. Wählen Sie im Textfeld Ausgewählter Primärschlüssel/eindeutiger Schlüssel oder Index den neuen Index aus.

  7. Wählen Sie im Raster Als CLUSTERED erstellenaus, und wählen Sie in der Dropdownliste rechts neben der Eigenschaft Nein aus.

  8. Wählen Sie Schließen aus.

  9. Klicken Sie im Menü Datei auf Speicherntable_name.

So erstellen Sie einen nicht gruppierten Index mit dem Objekt-Explorer

  1. Erweitern Sie im Objekt-Explorer die Datenbank mit der Tabelle, für die Sie einen nicht gruppierten Index erstellen möchten.

  2. Erweitern Sie den Ordner Tabellen .

  3. Erweitern Sie die Tabelle, für die Sie einen nicht gruppierten Index erstellen möchten.

  4. Klicken Sie mit der rechten Maustaste auf den Ordner Indizes, zeigen Sie auf Neuer Index, und wählen Sie Nicht gruppierter Index... aus.

  5. Geben Sie in das Dialogfeld Neuer Index auf der Seite Allgemein den Namen des neuen Indexes in das Feld Indexname ein.

  6. Klicken Sie unter Indexschlüsselspalten auf Hinzufügen….

  7. Aktivieren Sie im Dialogfeld Spalten auswählen austable_name die Kontrollkästchen der Tabellenspalten, die dem nicht gruppierten Index hinzugefügt werden sollen.

  8. Klicken Sie auf OK.

  9. Wählen Sie im Dialogfeld "Neuer Index" "OK" aus.

Verwenden von Transact-SQL

So erstellen Sie einen nicht gruppierten Index für eine Tabelle mit Transact-SQL

  1. Stellen Sie in Objekt-Explorer eine Verbindung mit einer Instanz von Datenbank-Engine mit AdventureWorks2022 installierter Verbindung her. Sie können aus Beispieldatenbanken herunterladenAdventureWorks2022.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.

    USE AdventureWorks2022;  
    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  
    

Nächste Schritte