Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können gruppierte Indizes für Tabellen in SQL Server 2014 mithilfe von SQL Server Management Studio oder Transact-SQL erstellen. Mit wenigen Ausnahmen sollte jede Tabelle über einen gruppierten Index verfügen. Neben der Verbesserung der Abfrageleistung kann ein gruppierter Index neu erstellt oder bei Bedarf neu organisiert werden, um die Tabellenfragmentierung zu steuern. Ein gruppierter Index kann auch in einer Ansicht erstellt werden. (Gruppierte Indizes werden im Thema "Gruppierte und nicht gruppierte Indizes" definiert.)
In diesem Themenbereich
Bevor Sie beginnen:
So erstellen Sie einen gruppierten Index für eine Tabelle mit:
Bevor Sie beginnen
Typische Implementierungen
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 oder Spalten erstellt, wenn ein gruppierter Index in der Tabelle noch nicht vorhanden ist und Sie keinen eindeutigen nicht gruppierten Index angeben. Die Primärschlüsselspalte kann keine NULL-Werte zulassen.
Wenn Sie eine UNIQUE-Einschränkung erstellen, wird standardmäßig ein eindeutiger nicht gruppierter Index erstellt, um eine UNIQUE-Einschränkung zu erzwingen. Sie können einen eindeutigen gruppierten Index angeben, wenn ein gruppierter Index in der Tabelle noch nicht vorhanden ist.
Ein im Rahmen der Einschränkung erstellter Index erhält automatisch denselben Namen wie der Einschränkungsname. Weitere Informationen finden Sie unter "Primär- und Fremdschlüssel-Einschränkungen" und "Eindeutige Constraints" und "Prüfungs-Einschränkungen".
Index unabhängig von einer Einschränkung
Sie können einen gruppierten Index für eine andere Spalte als primärschlüsselspalte erstellen, wenn eine einschränkung für nicht gruppierte Primärschlüssel angegeben wurde.
Einschränkungen und Beschränkungen
Wenn eine gruppierte Indexstruktur erstellt wird, ist Speicherplatz sowohl für die alten Strukturen (Quelle) als auch für neue (Ziel)-Strukturen in ihren jeweiligen Dateien und Dateigruppen erforderlich. Die alte Struktur wird erst freigegeben, wenn die Transaktion vollständig abgeschlossen ist. Es kann auch zusätzlicher temporärer Speicherplatz für die Sortierung erforderlich sein. Weitere Informationen finden Sie unter "Speicherplatzanforderungen für DDL-Indexvorgänge".
Wenn ein gruppierter Index auf einem Heap mit mehreren vorhandenen nicht gruppierten Indizes erstellt wird, müssen alle nicht gruppierten Indizes neu erstellt werden, sodass sie den Clusteringschlüsselwert anstelle des Zeilenbezeichners (RID) enthalten. Wenn ein gruppierter Index in einer Tabelle entfernt wird, die mehrere nicht gruppierte Indizes enthält, werden die nicht gruppierten Indizes während des DROP-Vorgangs neu erstellt. Dies kann bei großen Tabellen erhebliche Zeit in Anspruch nehmen.
Die bevorzugte Methode zum Erstellen von Indizes für große Tabellen besteht darin, mit dem gruppierten Index zu beginnen und dann alle nicht gruppierten Indizes zu erstellen. Erwägen Sie das Festlegen der ONLINE-Option auf EIN, wenn Sie Indizes für vorhandene Tabellen erstellen. Wenn diese Option auf "EIN" festgelegt ist, werden langfristige Tabellensperren nicht gehalten. Dadurch können Abfragen oder Aktualisierungen der zugrunde liegenden Tabelle fortgesetzt werden. Weitere Informationen finden Sie unter Ausführen von Onlineindexvorgängen .
Der Indexschlüssel eines gruppierten Indexes darf keine Spalten mit vorhandenen Daten in der ROW_OVERFLOW_DATA Zuordnungseinheit enthalten
varchar. Wenn ein gruppierter Index in einervarcharSpalte erstellt wird und sich die vorhandenen Daten in der IN_ROW_DATA Zuordnungseinheit befinden, schlagen nachfolgende Einfüge- oder Aktualisierungsaktionen für die Spalte, die die Daten außerhalb der Zeile pushen würde, fehl. Um Informationen zu Tabellen abzurufen, die Zeilenüberlaufdaten enthalten können, verwenden Sie die dynamische Verwaltungsfunktion sys.dm_db_index_physical_stats (Transact-SQL).
Sicherheit
Erlaubnisse
Erfordert ALTER-Berechtigung für die Tabelle oder Ansicht. Der Benutzer muss Mitglied der festen Serverrolle "sysadmin " oder der db_ddladmin und db_owner festen Datenbankrollen sein.
Verwendung von SQL Server Management Studio
So erstellen Sie einen gruppierten Index mithilfe des Objekt-Explorers
Erweitern Sie im Objekt-Explorer die Tabelle, auf der Sie einen gruppierten Index erstellen möchten.
Klicken Sie mit der rechten Maustaste auf den Ordner " Indizes ", zeigen Sie auf "Neuer Index", und wählen Sie "Gruppierter Index" aus.
Geben Sie im Dialogfeld "Neuer Index " auf der Seite "Allgemein " den Namen des neuen Indexes im Feld "Indexname " ein.
Klicken Sie unter "Indexschlüsselspalten" auf "Hinzufügen...".
Aktivieren Sie im Dialogfeld „Spalten austable_name auswählen“ das Kontrollkästchen der Tabellenspalte, die dem gruppierten Index hinzugefügt werden soll.
Klicke auf OK.
Klicken Sie im Dialogfeld "Neuer Index " auf "OK".
So erstellen Sie einen gruppierten Index mithilfe des Tabellen-Designers
Erweitern Sie im Objekt-Explorer die Datenbank, auf der Sie eine Tabelle mit einem gruppierten Index erstellen möchten.
Klicken Sie mit der rechten Maustaste auf den Ordner "Tabellen ", und klicken Sie auf "Neue Tabelle...".
Erstellen Sie wie gewohnt eine neue Tabelle. Weitere Informationen finden Sie unter Erstellen von Tabellen (Datenbank-Engine).
Klicken Sie mit der rechten Maustaste auf die oben erstellte neue Tabelle, und klicken Sie auf "Entwurf".
Klicken Sie im Menü Tabellen-Designer auf Indizes/Schlüssel.
Klicken Sie im Dialogfeld "Indizes/Schlüssel " auf "Hinzufügen".
Wählen Sie den neuen Index im Textfeld "Ausgewählter Primärschlüssel/Eindeutiger Schlüssel" oder "Index " aus.
Wählen Sie im Raster " Als Gruppiert erstellen" aus, und wählen Sie " Ja " aus der Dropdownliste rechts neben der Eigenschaft aus.
Klicken Sie auf Schließen.
Klicken Sie im Menü Datei auf Speicherntable_name.
Verwenden von Transact-SQL
So erstellen Sie einen gruppierten Index
Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.
Klicken Sie in der Standardleiste auf Neue Abfrage.
Kopieren Sie das folgende Beispiel, fügen Sie es in das Abfragefenster ein, und klicken Sie auf Ausführen.
USE AdventureWorks2012; GO -- Create a new table with three columns. CREATE TABLE dbo.TestTable (TestCol1 int NOT NULL, TestCol2 nchar(10) NULL, TestCol3 nvarchar(50) NULL); GO -- Create a clustered index called IX_TestTable_TestCol1 -- on the dbo.TestTable table using the TestCol1 column. CREATE CLUSTERED INDEX IX_TestTable_TestCol1 ON dbo.TestTable (TestCol1); GO
Weitere Informationen finden Sie unter CREATE INDEX (Transact-SQL).
Siehe auch
Erstellen von Primärschlüsseln
Erstellen eindeutiger Einschränkungen