Freigeben über


Erstellen nicht gruppierter Indizes

Sie können mehrere nicht gruppierte Indizes für eine Tabelle oder eine indizierte Sicht erstellen. Im Allgemeinen werden nicht gruppierte Indizes erstellt, um die Leistung häufig verwendeter Abfragen zu optimieren, die nicht vom gruppierten Index abgedeckt werden.

Typische Implementierungen

Nicht gruppierte Indizes werden auf folgende Weise implementiert:

  • PRIMARY KEY- und UNIQUE-Einschränkungen

    Wenn Sie eine PRIMARY KEY-Einschränkung erstellen, wird automatisch ein eindeutiger gruppierter Index für die Spalte(n) erstellt, wenn noch kein gruppierter Index für die Tabelle vorhanden ist und Sie keinen eindeutigen nicht gruppierten Index angeben. Die Primärschlüsselspalte darf keine NULL-Werte zulassen.

    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 PRIMARY KEY-Einschränkungen und UNIQUE-Einschränkungen.

  • 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.

Index mit eingeschlossenen Spalten

Wenn Sie einen nicht gruppierten Index für eine Abfrage erstellen, können Sie Nichtschlüsselspalten in die Indexdefinition einschließen, um die Spalten in der Abfrage abzudecken, die nicht als primäre Suchspalten verwendet werden. Leistungsvorteile werden erzielt, weil der Abfrageoptimierer alle erforderlichen Spaltendaten im Index finden kann; auf den Tabellen- oder gruppierten Index wird nicht zugegriffen. Weitere Informationen finden Sie unter Index mit eingeschlossenen Spalten.

Index mit einem Filterprädikat

Ein gefilterter Index ist ein optimierter nicht gruppierter Index, der sich besonders für Abfragen eignet, bei denen aus einer fest definierten Teilmenge von Daten ausgewählt wird. Dieser verwendet ein Filterprädikat, um einen Teil der Zeilen in der Tabelle zu indizieren. Mit einem sorgfältig entworfenen gefilterten Index können im Vergleich zu Tabellenindizes die Abfrageleistung verbessert und der Aufwand für die Indexverwaltung und die Indexspeicherung reduziert werden.

Weitere Informationen finden Sie unter Richtlinien für den Entwurf gefilterter Indizes.

Anforderungen an den Speicherplatz

Informationen zu den Speicherplatzanforderungen für nicht gruppierte Indizes finden Sie unter Ermitteln der Speicherplatzanforderungen für Indizes.

Überlegungen zur Leistung

Zwar ist es wichtig, dass der Index alle von der Abfrage verwendeten Spalten enthält, Sie sollten jedoch das Hinzufügen nicht erforderlicher Spalten vermeiden. Das Hinzufügen einer zu großen Anzahl von Schlüssel- oder Nichtschlüsselindexspalten kann zu folgenden Leistungseinbußen führen:

  • Eine geringere Anzahl von Indexzeilen passt auf eine Seite. Dies führt zu einer Zunahme der Datenträger-E/A sowie zu einer verringerten Cacheeffizienz.

  • Zum Speichern des Indexes ist eine größere Menge an Speicherplatz erforderlich.

  • Die Indexwartung kann zu einem größeren Zeitaufwand für das Ausführen von Änderungen, Einfügungen, Aktualisierungen, Löschvorgängen und Zusammenführungen an der zugrunde liegenden Tabelle oder indizierten Sicht führen.

Sie sollten überprüfen, ob die Steigerungen der Abfrageleistung die negativen Auswirkungen auf die Leistung während der Datenänderung sowie hinsichtlich zusätzlicher Speicherplatzanforderungen aufwiegen. Weitere Informationen zum Auswerten der Abfrageleistung finden Sie unter Optimieren von Abfragen.

Ziehen Sie die Verwendung eines gefilterten Indexes zur Verbesserung der Leistung in Betracht, wenn die Tabellendaten Spalten mit fest definierten Zeilenteilmengen enthalten, z. B. Spalten mit geringer Dichte, Spalten, die größtenteils NULL-Werte enthalten, Spalten mit Wertekategorien und Spalten mit verschiedenen Wertebereichen. Weitere Informationen finden Sie unter Richtlinien für den Entwurf gefilterter Indizes.

So erstellen Sie eine PRIMARY KEY- oder UNIQUE-Einschränkung, wenn Sie eine Tabelle erstellen

CREATE TABLE (Transact-SQL)

So erstellen Sie eine PRIMARY KEY- oder UNIQUE-Einschränkung für eine vorhandene Tabelle

ALTER TABLE (Transact-SQL)

So erstellen Sie einen Index

CREATE INDEX (Transact-SQL)