Freigeben über


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.

Wichtiger HinweisWichtig

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.