sys.sysindexes (Transact-SQL)

Aktualisiert: 05. Dezember 2005

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.

ms190283.note(de-de,SQL.90).gifWichtig:
Diese SQL Server 2000-Systemtabelle wird aus Gründen der Abwä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. Dieses Feature wird in einer zukünftigen Version von Microsoft SQL Server entfernt. Verwenden Sie dieses Feature 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

Interne Systemstatusinformationen

first

binary(6)

Zeiger auf die erste Seite oder Stammseite.

In SQL Server Version 6.5 und früher zeigt sysindexes.first immer auf den Anfang eines Heaps, den Anfang einer Blattebene eines Indexes oder den Anfang einer Kette von text- und image-Seiten.

In SQL Server, Version 7.0 und höher, wird sysindexes.first 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.

In SQL Server, Version 6.5 und früher, verweist sysindexes.root auf die letzte Seite in einem Heap, wenn indid = 0.

In SQL Server, Version 7.0 und höher, wird sysindexes.root 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 ist rowmodctr nicht vollständig kompatibel mit früheren Versionen. 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 ist maxirow nicht vollständig kompatibel mit früheren Versionen.

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

Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

Gibt 0 zurück.

reserved2

int

Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

Gibt 0 zurück.

FirstIAM

binary(6)

Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

NULL = Index ist partitioniert.

impid

smallint

Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt. Indeximplementierungsflag.

Gibt 0 zurück.

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

Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

Gibt 0 zurück.

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 (Transact-SQL).

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-, ntext- oder image-Spalte auch eine Zeile in sysindexes mit indid = 255. In SQL Server 2005 ist diese Index-ID 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 Datenbankmodul Änderungszähler auf Zeilenebene verwaltet. In SQL Server 2005 werden solche Zähler 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 Indexstatistiken.
  • 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.

Siehe auch

Verweis

Katalogsichten (Transact-SQL)
Zuordnen von SQL Server 2000-Systemtabellen zu SQL Server 2005-Katalogsichten
sys.indexes (Transact-SQL)

Hilfe und Informationen

Informationsquellen für SQL Server 2005

Änderungsverlauf

Version Verlauf

05. Dezember 2005

Geänderter Inhalt:
  • Rückgabewert für partitionierte Tabellen und Indizes in den Spalten dpages, reserved, used, rowcnt und rowmodctr von NULL in 0 geändert.
  • Ergebnis in der Spalte FirstIAM korrigiert.