Erstellen nicht gruppierter IndizesCreate Nonclustered Indexes

DIESES THEMA GILT FÜR:jaSQL Server (ab 2016)jaAzure SQL-DatenbankneinAzure SQL Data Warehouse neinParallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL Server (starting with 2016)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Sie können nicht gruppierte Indizes in SQL Server 2016SQL Server 2016 mithilfe von SQL Server Management StudioSQL Server Management Studio oder Transact-SQLTransact-SQLerstellen.You can create nonclustered indexes in SQL Server 2016SQL Server 2016 by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. Ein nicht gruppierter Index ist eine von den in einer Tabelle gespeicherten Daten getrennte Indexstruktur, durch die ausgewählte Spalten neu angeordnet werden.A nonclustered index is an index structure separate from the data stored in a table that reorders one or more selected columns. 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 DatenbankmodulDatabase Engine auf die Zeilen in der zugrunde liegenden Tabelle verweisen.Nonclustered indexes can often help you find data more quickly than searching the underlying table; queries can sometimes be answered entirely by the data in the nonclustered index, or the nonclustered index can point the DatenbankmodulDatabase Engine to the rows in the underlying table. 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.Generally, nonclustered indexes are created to improve the performance of frequently used queries not covered by the clustered index or to locate rows in a table without a clustered index (called a heap). Sie können mehrere nicht gruppierte Indizes für eine Tabelle oder eine indizierte Sicht erstellen.You can create multiple nonclustered indexes on a table or indexed view.

In diesem ThemaIn This Topic

Vorbereitungen Before You Begin

Typische Implementierungen Typical Implementations

Nicht gruppierte Indizes werden auf folgende Weise implementiert:Nonclustered indexes are implemented in the following ways:

  • UNIQUE-EinschränkungenUNIQUE constraints

    Wenn Sie eine UNIQUE-Einschränkung erstellen, wird ein eindeutiger nicht gruppierter Index erstellt, um standardmäßig eine UNIQUE-Einschränkung zu erzwingen.When you create a UNIQUE constraint, a unique nonclustered index is created to enforce a UNIQUE constraint by default. Sie können einen eindeutigen gruppierten Index angeben, wenn noch kein gruppierter Index für die Tabelle vorhanden ist.You can specify a unique clustered index if a clustered index on the table does not already exist. Weitere Informationen finden Sie unter Unique Constraints and Check Constraints.For more information, see Unique Constraints and Check Constraints.

  • Index unabhängig von einer EinschränkungIndex independent of a constraint

    Wenn der gruppierte Index nicht angegeben wird, wird standardmäßig ein nicht gruppierter Index erstellt.By default, a nonclustered index is created if clustered is not specified. Die maximale Anzahl nicht gruppierter Indizes, die pro Tabelle erstellt werden können, beträgt 999.The maximum number of nonclustered indexes that can be created per table is 999. Dies schließt alle Indizes ein, die durch PRIMARY KEY- oder UNIQUE-Einschränkungen erstellt wurden, jedoch keine XML-Indizes.This includes any indexes created by PRIMARY KEY or UNIQUE constraints, but does not include XML indexes.

  • Nicht gruppierter Index für eine indizierte SichtNonclustered index on an indexed view

    Nachdem ein eindeutiger gruppierter Index für eine Sicht erstellt wurde, können nicht gruppierte Indizes erstellt werden.After a unique clustered index has been created on a view, nonclustered indexes can be created. Weitere Informationen finden Sie unter Erstellen von indizierten Sichten.For more information, see Create Indexed Views.

Sicherheit Security

Berechtigungen Permissions

Erfordert die ALTER-Berechtigung in der Tabelle oder Sicht.Requires ALTER permission on the table or view. Der Benutzer muss ein Mitglied der festen Serverrolle sysadmin bzw. der festen Datenbankrollen db_ddladmin und db_owner sein.User must be a member of the sysadmin fixed server role or the db_ddladmin and db_owner fixed database roles.

Verwendung von SQL Server Management Studio Using SQL Server Management Studio

So erstellen Sie einen nicht gruppierten Index mit dem Tabellen-DesignerTo create a nonclustered index by using the Table Designer

  1. Erweitern Sie im Objekt-Explorer die Datenbank mit der Tabelle, für die Sie einen nicht gruppierten Index erstellen möchten.In Object Explorer, expand the database that contains the table on which you want to create a nonclustered index.

  2. Erweitern Sie den Ordner Tabellen .Expand the Tables folder.

  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.Right-click the table on which you want to create a nonclustered index and select Design.

  4. Klicken Sie im Menü Tabellen-Designer auf Indizes/Schlüssel.On the Table Designer menu, click Indexes/Keys.

  5. Klicken Sie im Dialogfeld Indizes/Schlüssel auf Hinzufügen.In the Indexes/Keys dialog box, click Add.

  6. Wählen Sie im Textfeld Ausgewählter Primärschlüssel/eindeutiger Schlüssel oder Index den neuen Index aus.Select the new index in the Selected Primary/Unique Key or Index text box.

  7. Wählen Sie im Raster Als CLUSTERED erstellenaus, und wählen Sie in der Dropdownliste rechts neben der Eigenschaft Nein aus.In the grid, select Create as Clustered, and choose No from the drop-down list to the right of the property.

  8. Klicken Sie auf Schließen.Click Close.

  9. Klicken Sie im Menü Datei auf Speicherntable_name.On the File menu, click Savetable_name.

So erstellen Sie einen nicht gruppierten Index mit dem Objekt-ExplorerTo create a nonclustered index by using Object Explorer

  1. Erweitern Sie im Objekt-Explorer die Datenbank mit der Tabelle, für die Sie einen nicht gruppierten Index erstellen möchten.In Object Explorer, expand the database that contains the table on which you want to create a nonclustered index.

  2. Erweitern Sie den Ordner Tabellen .Expand the Tables folder.

  3. Erweitern Sie die Tabelle, für die Sie einen nicht gruppierten Index erstellen möchten.Expand the table on which you want to create a nonclustered index.

  4. Klicken Sie mit der rechten Maustaste auf den Ordner Index , zeigen Sie auf Neuer Index, und wählen Sie Nicht gruppierter Index…aus.Right-click the Indexes folder, point to New Index, and select Non-Clustered Index….

  5. Geben Sie in das Dialogfeld Neuer Index auf der Seite Allgemein den Namen des neuen Indexes in das Feld Indexname ein.In the New Index dialog box, on the General page, enter the name of the new index in the Index name box.

  6. Klicken Sie unter Indexschlüsselspaltenauf Hinzufügen….Under Index key columns, click Add….

  7. Aktivieren Sie im Dialogfeld Spalten auswählen austable_name die Kontrollkästchen der Tabellenspalten, die dem nicht gruppierten Index hinzugefügt werden sollen.In the Select Columns fromtable_name dialog box, select the check box or check boxes of the table column or columns to be added to the nonclustered index.

  8. Klicken Sie auf OK.Click OK.

  9. Klicken Sie im Dialogfeld Neuer Index auf OK.In the New Index dialog box, click OK.

Verwenden von Transact-SQL Using Transact-SQL

So erstellen Sie einen nicht gruppierten Index für eine TabelleTo create a nonclustered index on a table

  1. Stellen Sie im Objekt-Explorer **** eine Verbindung mit einer DatenbankmodulDatabase Engine-Instanz her.In Object Explorer, connect to an instance of DatenbankmodulDatabase Engine.

  2. Klicken Sie in der Standardleiste auf Neue Abfrage.On the Standard bar, click New Query.

  3. Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.Copy and paste the following example into the query window and click Execute.

    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  
    

    Weitere Informationen finden Sie unter CREATE INDEX (Transact-SQL).For more information, see CREATE INDEX (Transact-SQL).