sys.sysindexes (Transact-SQL)
Enthält eine Zeile für jeden Index und jede Tabelle in der aktuellen Datenbank. XML-Indizes werden in dieser Sicht nicht unterstützt. Partitionierte Tabellen und Indizes werden in dieser Sicht nicht vollständig unterstützt. Verwenden Sie stattdessen die sys.indexes-Katalogsicht.
Wichtig |
---|
Diese SQL Server 2000-Systemtabelle wird aus Gründen der Rückwärtskompatibilität als Sicht bereitgestellt. Es wird empfohlen, stattdessen die aktuellen SQL Server -Systemsichten zu verwenden. Informationen zum Ermitteln der entsprechenden Systemsicht bzw. -sichten finden Sie unter Zuordnen von SQL Server 2000-Systemtabellen zu SQL Server 2005-Katalogsichten. Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. |
Spaltenname |
Datentyp |
Beschreibung |
---|---|---|
id |
int |
ID der Tabelle, zu der der Index gehört. |
status |
int |
Systemstatusinformationen. Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt. |
first |
binary(6) |
Zeiger auf die erste Seite oder Stammseite. Nicht verwendet, wenn indid = 0. NULL = Index ist partitioniert, wenn indid > 1. NULL = Tabelle ist partitioniert, wenn indid gleich 0 oder 1. |
indid |
smallint |
ID des Indexes: 0 = Heap 1 = Gruppierter Index >1 = Nicht gruppierter Index |
root |
binary(6) |
Für indid >= 1 ist root der Zeiger auf die Stammseite. Nicht verwendet, wenn indid = 0. NULL = Index ist partitioniert, wenn indid > 1. NULL = Tabelle ist partitioniert, wenn indid gleich 0 oder 1. |
minlen |
smallint |
Mindestgröße einer Zeile. |
keycnt |
smallint |
Anzahl der Schlüssel. |
groupid |
smallint |
ID der Dateigruppe, für die das Objekt erstellt wurde. NULL = Index ist partitioniert, wenn indid > 1. NULL = Tabelle ist partitioniert, wenn indid gleich 0 oder 1. |
dpages |
int |
Für indid = 0 oder indid = 1 ist dpages die Anzahl der verwendeten Datenseiten. Für indid > 1 ist dpages die Anzahl der verwendeten Indexseiten. 0 = Index ist partitioniert, wenn indid > 1. 0 = Tabelle ist partitioniert, wenn indid gleich 0 oder 1. Bei einem Zeilenüberlauf ist das Ergebnis ungenau. |
reserved |
int |
Für indid = 0 oder indid = 1 ist reserved die Anzahl der allen Indizes und Tabellendaten zugeordneten Seiten. Für indid > 1 ist reserved die Anzahl der dem Index zugeordneten Seiten. 0 = Index ist partitioniert, wenn indid > 1. 0 = Tabelle ist partitioniert, wenn indid gleich 0 oder 1. Bei einem Zeilenüberlauf ist das Ergebnis ungenau. |
used |
int |
Für indid = 0 oder indid = 1 ist used die Gesamtanzahl der für alle Indizes und Tabellendaten verwendeten Seiten. Für indid > 1 ist used die Anzahl der für den Index verwendeten Seiten. 0 = Index ist partitioniert, wenn indid > 1. 0 = Tabelle ist partitioniert, wenn indid gleich 0 oder 1. Bei einem Zeilenüberlauf ist das Ergebnis ungenau. |
rowcnt |
bigint |
Zeilenanzahl auf Datenebene, basierend auf indid = 0 und indid = 1. 0 = Index ist partitioniert, wenn indid > 1. 0 = Tabelle ist partitioniert, wenn indid gleich 0 oder 1. |
rowmodctr |
int |
Zählt die Gesamtzahl der eingefügten, gelöschten oder aktualisierten Zeilen, seitdem die Statistiken für die Tabelle zuletzt aktualisiert wurden. 0 = Index ist partitioniert, wenn indid > 1. 0 = Tabelle ist partitioniert, wenn indid gleich 0 oder 1. In SQL Server 2005 und höheren Versionen ist rowmodctr nicht vollständig mit früheren Versionen kompatibel. Weitere Informationen finden Sie im Abschnitt zu den Hinweisen. |
xmaxlen |
smallint |
Maximale Größe einer Zeile |
maxirow |
smallint |
Maximale Größe einer Indexzeile, die kein Blatt darstellt. In SQL Server 2005 und höheren Versionen ist maxirow nicht vollständig mit früheren Versionen kompatibel. |
OrigFillFactor |
tinyint |
Ursprünglicher Füllfaktorwert, der beim Erstellen des Indexes verwendet wurde. Dieser Wert wird nicht aufrechterhalten, kann jedoch hilfreich sein, wenn Sie einen Index neu erstellen müssen und sich nicht an den verwendeten Füllfaktorwert erinnern. |
StatVersion |
tinyint |
Gibt 0 zurück. Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt. |
reserved2 |
int |
Gibt 0 zurück. Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt. |
FirstIAM |
binary(6) |
NULL = Index ist partitioniert. Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt. |
impid |
smallint |
Indeximplementierungsflag. Gibt 0 zurück. Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt. |
lockflags |
smallint |
Wird zur Einschränkung der berücksichtigten Granularitäten von Sperren für einen Index verwendet. Beispielsweise könnte zur Minimierung der Sperrkosten eine Nachschlagetabelle, die im Wesentlichen schreibgeschützt ist, so eingerichtet werden, dass die Sperrung nur auf Tabellenebene erfolgt. |
pgmodctr |
int |
Gibt 0 zurück. Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt. |
keys |
varbinary(816) |
Liste der Spalten-IDs der Spalten, aus denen der Indexschlüssel besteht. Gibt NULL zurück. Verwenden Sie zum Anzeigen der Indexschlüsselspalten sys.sysindexkeys. |
name |
sysname |
Name des Indexes oder der Statistik. Gibt NULL zurück, wenn indid = 0. Ändern Sie die Anwendung so, dass nach einem Heapnamen mit dem Wert NULL gesucht wird. |
statblob |
image |
Statistik-BLOB (Binary Large Object). Gibt NULL zurück. |
maxlen |
int |
Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt. |
rows |
int |
Zeilenanzahl auf Datenebene, basierend auf indid = 0 und indid = 1. Der Wert wird für indid >1 wiederholt. |
Hinweise
Als reserviert definierte Spalten sollten nicht verwendet werden.
In früheren Versionen von SQL Server besaß jede Tabelle mit mindestens einer text-Spalte, einer ntext-Spalte oder einer image-Spalte auch eine Zeile in sysindexes mit indid = 255. Diese Index-ID ist nicht mehr vorhanden. Wenn eine Tabelle oder ein Index mindestens einen LOB-Datentyp (Large Object) verwendet, wird pro Partition eine LOB_DATA-Zuordnungseinheit zugeordnet, um die Speicherung der Daten zu verwalten. Weitere Informationen finden Sie unter Organisationsstruktur von Tabellen und Indizes.
Die Spalten dpages, reserved und used geben keine genauen Ergebnisse zurück, wenn die Tabelle bzw. der Index Daten in der ROW_OVERFLOW-Zuordnungseinheit enthält. Zudem werden die Seitenanzahlen aller Indizes separat nachverfolgt und nicht für die Basistabelle aggregiert. Verwenden Sie zum Anzeigen der Seitenanzahlen die Katalogsichten sys.allocation_units oder sys.partitions oder die dynamische Verwaltungssicht sys.dm_db_partition_stats.
In früheren Versionen von SQL Server wurden von Database Engine (Datenbankmodul) Änderungszähler auf Zeilenebene verwaltet. Solche Zähler werden nun auf Spaltenebene verwaltet. Daher wird die rowmodctr-Spalte ähnlich wie in früheren Versionen berechnet und erzeugt ähnliche Ergebnisse. Diese sind jedoch nicht genau.
Wenn Sie mit dem Wert in rowmodctr den Zeitpunkt der Aktualisierung der Statistiken bestimmen möchten, können Sie folgende Lösungen in Betracht ziehen:
Tun Sie nichts. Der neue rowmodctr-Wert hilft Ihnen häufig dabei, den Zeitpunkt für die Aktualisierung der Statistiken zu bestimmen, da das Verhalten weitgehend dem Ergebnis früherer Versionen gleicht.
Verwenden Sie AUTO_UPDATE_STATISTICS. Weitere Informationen finden Sie unter Verwenden von Statistiken zum Verbessern der Abfrageleistung.
Verwenden Sie ein Zeitlimit, um den Zeitpunkt für die Aktualisierung der Statistiken zu bestimmen. Beispielsweise jede Stunde, jeden Tag oder jede Woche.
Verwenden Sie Informationen auf Anwendungsebene, um den Zeitpunkt für die Aktualisierung der Statistiken zu bestimmen. Beispielsweise jedes Mal, wenn sich der Maximalwert einer identity-Spalte um mehr als 10.000 ändert oder wenn ein Masseneinfügungsvorgang ausgeführt wird.