sp_createstats (Transact-SQL)

Ruft die CREATE STATISTICS-Anweisung auf, um für Spalten, die noch nicht der ersten Spalte in einem Statistikobjekt entsprechen, eine Statistik für einzelne Spalten zu erstellen. Das Erstellen von Statistiken für einzelne Spalten erhöht die Anzahl von Histogrammen und kann zur Verbesserung von Kardinalitätsschätzungen, Abfrageplänen und Abfrageleistung führen. Die erste Spalte eines Statistikobjekts verfügt über ein Histogramm, während andere Spalten kein Histogramm enthalten.

sp_createstats ist für Anwendungen wie Vergleichstests hilfreich, wenn Abfrageausführungszeiten ein kritischer Faktor sind, und es zu lange dauert, bis der Abfrageoptimierer Statistiken für einzelne Spalten generiert hat. In den meisten Fällen ist es nicht erforderlich, sp_createstats zu verwenden. Wenn die AUTO_CREATE_STATISTICS-Option aktiviert ist, generiert der Abfrageoptimierer nach Bedarf Statistiken für einzelne Spalten, um Abfragepläne zu verbessern.

Weitere Informationen zu Statistiken finden Sie unter Verwenden von Statistiken zum Verbessern der Abfrageleistung. Weitere Informationen zum Generieren von Statistiken für einzelne Spalten finden Sie in der Erläuterung zur AUTO_CREATE_STATISTICS-Option im Thema ALTER DATABASE SET-Optionen (Transact-SQL).

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

sp_createstats [ [ @indexonly = ] 'indexonly' ] 
        [ , [ @fullscan = ] 'fullscan' ] 
    [ , [ @norecompute = ] 'norecompute' ]

Argumente

  • [ @indexonly= ] 'indexonly'
    Erstellt Statistiken nur für Spalten, die sich in einem vorhandenen Index befinden, und nicht der ersten Spalte in einer beliebigen Indexdefinition entsprechen. indexonly entspricht char(9). Der Standardwert ist NO.

  • [ @fullscan= ] 'fullscan'
    Verwendet die CREATE STATISTICS-Anweisung mit der FULLSCAN-Option. fullscan entspricht char(9). Der Standardwert ist NO.

  • [ @norecompute= ] 'norecompute'
    Verwendet die CREATE STATISTICS-Anweisung mit der NORECOMPUTE-Option. norecompute entspricht char(12). Der Standardwert ist NO.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Resultsets

Jedes neue Statistikobjekt hat den gleichen Namen wie die Spalte, für die es erstellt wurde.

Hinweise

Mit sp_createstats werden keine Statistiken für Spalten erstellt oder aktualisiert, die der ersten Spalte in einem vorhandenen Statistikobjekt entsprechen. Dies schließt die erste Spalte von Statistiken ein, die für Indizes, Spalten mit Statistiken für einzelne Spalten, die mit der AUTO_CREATE_STATISTICS-Option generiert wurden, sowie die erste Spalte von Statistiken, die mit der CREATE STATISTICS-Anweisung erstellt wurden. Mit sp_createstats werden keine Statistiken für die ersten Spalten deaktivierter Indizes erstellt, es sei denn, diese Spalte wird in einem anderen aktivierten Index verwendet. Mit sp_createstats werden keine Statistiken für Tabellen mit einem deaktivierten gruppierten Index erstellt.

Wenn die Tabelle einen Spaltensatz enthält, werden mit sp_createstats keine Statistiken für Spalten mit geringer Dichte erstellt. Weitere Informationen über Spaltensätze und Spalten mit geringer Dichte finden Sie unter Verwenden von Spaltensätzen und Verwenden von Spalten mit geringer Dichte.

Berechtigungen

Erfordert die Mitgliedschaft in der festen Datenbankrolle db_owner.

Beispiele

A. Erstellen von Statistiken für einzelne Spalten für alle geeigneten Spalten

Im folgenden Beispiel wird eine Statistik für einzelne Spalten für alle geeigneten Spalten in der aktuellen Datenbank erstellt.

EXEC sp_createstats;
GO

B. Erstellen von Statistiken für einzelne Spalten für alle geeigneten Indexspalten

Im folgenden Beispiel werden Statistiken für einzelne Spalten für alle geeigneten Spalten erstellt, die sich bereits in einem Index befinden und nicht der ersten Spalte im Index entsprechen.

EXEC sp_createstats 'indexonly';
GO