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 unter der AUTO_CREATE_STATISTICS
Option in DEN 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