Share via


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. Pro Tabelle können höchstens 249 nicht gruppierte Indizes erstellt werden. Dies schließt die Indizes ein, die durch PRIMARY KEY- oder UNIQUE-Einschränkungen erstellt wurden, nicht jedoch 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.

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 oder Löschvorgängen 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.

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)

Siehe auch

Konzepte

Erstellen von Indizes (Datenbankmodul)
Entwurfsrichtlinien für einen nicht gruppierten Index

Hilfe und Informationen

Informationsquellen für SQL Server 2005