Erstellen nicht gruppierter Indizes

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Sie können in SQL Server oder SQL Server Management Studio nicht gruppierte Indizes in 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. In vielen Fällen können Daten mithilfe von nicht gruppierten Indizes schneller gefunden werden als mit einer Suche in der zugrunde liegenden Tabelle. Mitunter lassen sich Abfragen vollständig mit den Daten im nicht gruppierten Index beantworten, 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 Sichten.

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 erstellen aus, 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 Speichern table_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 aus table_name die Kontrollkästchen der Tabellenspalten, die dem nicht gruppierten Index hinzugefügt werden sollen.

  8. Wählen Sie OK aus.

  9. Klicken Sie im Dialogfeld Neuer Index auf OK.

Verwenden von Transact-SQL

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

  1. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz mit der Installation von AdventureWorks2022 her. Sie können AdventureWorks2022 aus Beispieldatenbanken herunterladen.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.

  3. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann 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