Festlegen von Indexoptionen
Beim Entwerfen, Erstellen oder Ändern eines Index müssen verschiedene Indexoptionen berücksichtigt werden. Diese Optionen können entweder beim erstmaligen Erstellen eines Index oder beim Neuerstellen eines Index angegeben werden. Außerdem können Sie einige der Indexoptionen jederzeit durch Verwenden der SET-Klausel in der ALTER INDEX-Anweisung festlegen.
Indexoption |
Beschreibung |
In Metadaten gespeicherte Einstellung |
Verwandtes Thema |
---|---|---|---|
PAD_INDEX |
Bestimmt den Prozentsatz des freien Speicherplatzes in den Zwischenebenenseiten bei der Indexerstellung. |
Ja |
|
FILLFACTOR |
Bestimmt den Prozentsatz des freien Speicherplatzes auf der Blattebene jeder Seite bei der Indexerstellung. |
Ja |
|
SORT_IN_TEMPDB |
Bestimmt, wo die Sortierzwischenergebnisse, die bei der Indexerstellung generiert werden, gespeichert werden. Bei ON werden die Sortierergebnisse in tempdb gespeichert. Bei OFF werden die Sortierergebnisse in der Dateigruppe oder im Partitionsschema gespeichert, in der bzw. in dem der resultierende Index gespeichert wird.
Hinweis
Wenn kein Sortiervorgang erforderlich ist oder die Sortierung im Arbeitsspeicher erfolgen kann, wird SORT_IN_TEMPDB ignoriert.
|
Nein |
|
IGNORE_DUP_KEY |
Gibt die Fehlermeldung an, wenn ein Einfügevorgang versucht, doppelte Schlüsselwerte in einen eindeutigen Index einzufügen. Die Option IGNORE_DUP_KEY gilt nur für Einfügevorgänge nach dem Erstellen oder Neuerstellen des Index. Die Standardeinstellung ist OFF. |
Ja |
|
STATISTICS_NORECOMPUTE |
Gibt an, ob veraltete Indexstatistiken automatisch neu berechnet werden sollen. |
Ja |
|
DROP_EXISTING |
Gibt an, dass der vorhandene Index gelöscht und neu erstellt werden soll. |
Nein |
|
ONLINE |
Bestimmt, ob während Indexvorgängen der gleichzeitige Benutzerzugriff auf die Daten der zugrunde liegenden Tabelle oder des gruppierten Index und aller zugehörigen nicht gruppierten Indizes zulässig ist.
Hinweis
Online-Indexvorgänge sind nur in der SQL Server Enterprise, Developer und Evaluation Edition verfügbar.
|
Nein |
|
ALLOW_ROW_LOCKS |
Bestimmt, ob beim Zugreifen auf Indexdaten Zeilensperren verwendet werden. |
Ja |
|
ALLOW_PAGE_LOCKS |
Bestimmt, ob beim Zugreifen auf Indexdaten Seitensperren verwendet werden. |
Ja |
|
MAXDOP |
Legt die maximale Anzahl der Prozessoren fest, die der Abfrageprozessor zum Ausführen einer einzelnen Indexanweisung verwenden darf. In Abhängigkeit von der aktuellen Systemlast können auch weniger Prozessoren verwendet werden.
Hinweis
Parallele Indexvorgänge sind nur in der SQL Server Enterprise, Developer und Evaluation Edition verfügbar.
|
Nein |
|
DATA_COMPRESSION |
Gibt die Datenkomprimierungsoption für die angegebene Tabelle, die Partitionsnummer oder den Bereich von Partitionen an. Optionen sind NONE, ROW und PAGE. |
Ja |
So legen Sie die Optionen für einen Index fest
Festlegen von Optionen ohne Neuerstellung
Mithilfe der SET-Klausel in der ALTER INDEX-Anweisung können Sie die folgenden Indexoptionen festlegen, ohne den Index neu erstellen zu müssen:
ALLOW_PAGE_LOCKS
ALLOW_ROW_LOCKS
IGNORE_DUP_KEY
STATISTICS_NORECOMPUTE
Diese Optionen werden sofort auf den Index angewendet. Dagegen können andere Indexoptionen wie z. B. FILLFACTOR und ONLINE nur beim Erstellen oder Neuerstellen eines Index angegeben werden.
Anzeigen der Indexoptionseinstellungen
Nicht alle Indexoptionswerte werden in den Metadaten gespeichert. Die in den Metadaten gespeicherten Werte können in den entsprechenden Katalogsichten angezeigt werden. Zum Überprüfen der aktuellen Optionseinstellungen für vorhandene Indizes verwenden Sie die sys.indexes-Katalogsicht. Zum Überprüfen des aktuellen Werts für STATISTICS_NORECOMPUTE verwenden Sie die sys.stats-Katalogsicht. Weitere Informationen finden Sie unter Anzeigen von Indexinformationen.
Beispiele
Mit dem folgenden Beispiel werden die Optionen ALLOW_ROW_LOCKS und IGNORE_DUP_KEY für den AK_Product_ProductNumber-Index der Production.Product-Tabelle festgelegt.
USE AdventureWorks;
GO
--Verify the current values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes
WHERE name = N'AK_Product_ProductNumber';
GO
--Set the ALLOW_ROW_LOCKS option OFF and the IGNORE_DUP_KEY option ON.
ALTER INDEX AK_Product_ProductNumber
ON Production.Product
SET (ALLOW_ROW_LOCKS = OFF, IGNORE_DUP_KEY = ON);
GO
--Verify the new values for these options.
SELECT allow_row_locks, ignore_dup_key
FROM sys.indexes
WHERE name = N'AK_Product_ProductNumber';
GO