Freigeben über


sp_createstats (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Ruft die CREATE STATISTICS -Anweisung auf, um Einzelspaltenstatistiken für Spalten zu erstellen, die noch nicht die erste Spalte in einem Statistikobjekt sind. 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 weist ein Histogramm auf; andere Spalten haben kein Histogramm.

sp_createstats ist nützlich für Anwendungen wie Benchmarking, wenn Abfrageausführungszeiten kritisch sind und nicht warten können, bis der Abfrageoptimierer eine Einzelspaltenstatistik generiert. In den meisten Fällen ist es nicht erforderlich, zu verwenden sp_createstats; der Abfrageoptimierer generiert bei Bedarf Statistiken in einer Spalte, um Abfragepläne zu verbessern, wenn die AUTO_CREATE_STATISTICS Option aktiviert ist.

Weitere Informationen zu Statistiken finden Sie unter Statistik. Weitere Informationen zum Generieren von Einzelspaltenstatistiken finden Sie in den AUTO_CREATE_STATISTICS ALTER DATABASE SET-Optionen.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

[ @indexonly = ] 'indexonly'

Erstellt Statistiken nur für Spalten, die sich in einem vorhandenen Index befinden und nicht die erste Spalte in einer Indexdefinition sind. @indexonly ist Char(9) mit einem Standardwert von NO.

[ @fullscan = ] 'fullscan'

Verwendet die CREATE STATISTICS -Anweisung mit der FULLSCAN Option. @fullscan ist Char(9) mit einem Standardwert von NO.

[ @norecompute = ] 'norecompute'

Verwendet die CREATE STATISTICS -Anweisung mit der NORECOMPUTE Option. @norecompute ist Char(12) mit einem Standardwert von NO.

[ @incremental = ] 'inkrementell'

Verwendet die CREATE STATISTICS -Anweisung mit der INCREMENTAL = ON Option. @incremental ist Char(12) mit einem Standardwert von NO.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Resultset

Jedes neue Statistikobjekt hat denselben Namen wie die Spalte, auf der es erstellt wird.

Hinweise

sp_createstats erstellt oder aktualisiert keine Statistiken für Spalten, die die erste Spalte in einem vorhandenen Statistikobjekt sind. Dies umfasst die erste Spalte von Statistiken, die für Indizes erstellt wurden, Spalten mit einzelspaltigen Statistiken, die mit AUTO_CREATE_STATISTICS der Option generiert wurden, und die erste Spalte der statistiken, die mit der CREATE STATISTICS Anweisung erstellt wurden. sp_createstats erstellt keine Statistiken zu den ersten Spalten deaktivierter Indizes, es sei denn, diese Spalte wird in einem anderen aktivierten Index verwendet. sp_createstats erstellt keine Statistiken zu Tabellen mit einem deaktivierten gruppierten Index.

Wenn die Tabelle einen Spaltensatz enthält, sp_createstats werden keine Statistiken für wenige Spalten erstellt. Weitere Informationen zu Spaltensätzen und geringen Spalten finden Sie unter Verwenden von Spaltensätzen und Verwenden von spaltensparend.

Berechtigungen

Hierfür ist die Mitgliedschaft in der festen Datenbankrolle db_owner erforderlich.

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 Einzelspaltenstatistiken für alle berechtigten Spalten erstellt, die sich bereits in einem Index befinden und nicht die erste Spalte im Index sind.

EXEC sp_createstats 'indexonly';
GO