Freigeben über


sp_statistics (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics Platform System (PDW)

Gibt eine Liste mit allen Indizes und Statistiken einer angegebenen Tabelle oder indizierten Sicht zurück.

Transact-SQL-Syntaxkonventionen

Syntax

sp_statistics
    [ @table_name = ] N'table_name'
    [ , [ @table_owner = ] N'table_owner' ]
    [ , [ @table_qualifier = ] N'table_qualifier' ]
    [ , [ @index_name = ] N'index_name' ]
    [ , [ @is_unique = ] 'is_unique' ]
    [ , [ @accuracy = ] 'accuracy' ]
[ ; ]

Hinweis

Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Argumente

[ @table_name = ] N'table_name'

Gibt die Tabelle zum Zurückgeben von Kataloginformationen an. @table_name ist "sysname" ohne Standard. Der Übereinstimmung von Wildcardmustern wird nicht unterstützt.

[ @table_owner = ] N'table_owner'

Der Name des Tabellenbesitzers der Tabelle, die zum Zurückgeben von Kataloginformationen verwendet wird. @table_owner ist "sysname" mit der Standardeinstellung "NULL. Der Übereinstimmung von Wildcardmustern wird nicht unterstützt. Wenn owner nicht angegeben, gelten die Standardtabellensichtsregeln des zugrunde liegenden Datenbankverwaltungssystems (DBMS).

Wenn der aktuelle Benutzer in SQL Server eine Tabelle mit dem angegebenen Namen besitzt, werden die Indizes dieser Tabelle zurückgegeben. Falls owner nicht angegeben und der aktuelle Benutzer besitzt keine Tabelle mit dem angegebenen name, sucht diese Prozedur nach einer Tabelle mit dem angegebenen name Besitzer des Datenbankbesitzers. Sofern eine solche Tabelle vorhanden ist, werden die Indizes dieser Tabelle zurückgegeben.

[ @table_qualifier = ] N'table_qualifier'

Der Name des Tabellenqualifizierers. @table_qualifier ist "sysname" mit einem Standardwert von NULL. Verschiedene DBMS-Produkte unterstützen die dreiteilige Benennung für Tabellen (<qualifier>.<owner>.<name>). In SQL Server stellt dieser Parameter den Datenbanknamen dar. Bei anderen Produkten stellt sie den Servernamen der Datenbankumgebung für die Tabelle dar.

[ @index_name = ] N'index_name'

Der Indexname. @index_name ist "sysname" mit einem Standardwert von %. Mustervergleiche mit Platzhalterzeichen werden unterstützt.

[ @is_unique = ] 'is_unique'

Gibt an, ob nur eindeutige Indizes (wenn Y) zurückgegeben werden sollen. @is_unique ist "char(1)", wobei eine leere Zeichenfolge standardmäßig vorhanden ist.

[ @accuracy = ] 'Genauigkeit'

Die Ebene der Kardinalität und Seitengenauigkeit für Statistiken. @accuracy ist Char(1) mit einem Standardwert von Q. Geben Sie E an, dass Statistiken aktualisiert werden, damit Kardinalität und Seiten korrekt sind.

  • E (SQL_ENSURE) fordert den Fahrer auf, die Statistiken bedingungslos abzurufen.

  • Q (SQL_QUICK) fordert den Treiber auf, die Kardinalität und die Seiten abzurufen, nur, wenn sie leicht vom Server verfügbar sind. In diesem Fall stellt der Treiber nicht sicher, dass die Werte aktuell sind. Anwendungen, die in den Open Group-Standard geschrieben wurden, erhalten SQL_QUICK immer das Verhalten von ODBC 3.x-kompatiblen Treibern.

Resultset

Spaltenname Datentyp Beschreibung
TABLE_QUALIFIER sysname Der Name des Tabellenqualifizierers. Diese Spalte kann sein NULL.
TABLE_OWNER sysname Der Name des Tabellenbesitzers. Diese Spalte gibt immer einen Wert zurück.
TABLE_NAME sysname Tabellenname. Diese Spalte gibt immer einen Wert zurück.
NON_UNIQUE smallint Lässt keine NULL-Werte zu.

0 = Eindeutig
1 = Nicht eindeutig
INDEX_QUALIFIER sysname Indexbesitzername. Verschiedene DBMS-Produkte ermöglichen neben dem Tabellenbesitzer auch anderen Benutzern das Erstellen von Indizes. In SQL Server ist diese Spalte immer identisch mit TABLE_NAME.
INDEX_NAME sysname Der Name des Index. Diese Spalte gibt immer einen Wert zurück.
TYPE smallint Diese Spalte gibt immer einen Wert zurück:

0 = Statistiken für eine Tabelle
1 = Gruppiert
2 = Hashed
3 = Nicht gruppiert
SEQ_IN_INDEX smallint Position der Spalte im Index
COLUMN_NAME sysname Spaltenname für jede Spalte der TABLE_NAME zurückgegebenen. Diese Spalte gibt immer einen Wert zurück.
COLLATION char(1) Die in der Sortierung verwendete Reihenfolge. Mögliche Werte sind:

A = Aufsteigend
D = Absteigend
NULL = Nicht zutreffend
CARDINALITY int Anzahl der Zeilen in der Tabelle oder der eindeutigen Werte im Index
PAGES int Anzahl der Seiten, die zum Speichern des Indexes oder der Tabelle benötigt werden
FILTER_CONDITION varchar(128) SQL Server gibt keinen Wert zurück.

Rückgabecodewerte

Keine.

Hinweise

Die Indizes im Resultset werden in aufsteigender Reihenfolge nach den Spalten NON_UNIQUE, , TYPE, INDEX_NAMEund SEQ_IN_INDEX.

Die Indexart Gruppiert bezeichnet einen Index, der sich dadurch auszeichnet, dass die in der Tabelle gespeicherten Daten in der durch den Index vorgegebenen Reihenfolge abgelegt sind. Dieser Wert entspricht SQL Server-Gruppierten Indizes.

Der Indextyp "Hashed" akzeptiert genaue Übereinstimmungs- oder Bereichssuchen, aber Mustervergleichssuchen verwenden den Index nicht.

Die sp_statistics gespeicherte Systemprozedur entspricht SQLStatistics in ODBC. Die zurückgegebenen Ergebnisse werden nach NON_UNIQUE, , TYPE, INDEX_QUALIFIER, INDEX_NAMEund .SEQ_IN_INDEX Weitere Informationen finden Sie in der ODBC-Referenz.

Berechtigungen

Erfordert die SELECT-Berechtigung im Schema.

Beispiel: Azure Synapse Analytics and Analytics Platform System (PDW)

Im folgenden Beispiel werden Informationen zur DimEmployee Tabelle aus der AdventureWorks Beispieldatenbank zurückgegeben.

EXEC sp_statistics DimEmployee;