CREATE STATISTICS (Transact-SQL)CREATE STATISTICS (Transact-SQL)

Gilt für: JaSQL Server JaAzure SQL-Datenbank JaAzure Synapse Analytics (SQL DW) JaParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Erstellt Abfrageoptimierungsstatistiken in einer oder mehreren Spalten einer Tabelle, einer indizierten Sicht oder einer externen Tabelle.Creates query optimization statistics on one or more columns of a table, an indexed view, or an external table. Bei den meisten Abfragen generiert der Abfrageoptimierer automatisch die notwendigen Statistiken für einen hochwertigen Abfrageplan; in einigen Fällen müssen Sie weitere Statistiken mithilfe von CREATE STATISTICS erstellen oder den Abfrageentwurf ändern, um die Abfrageleistung zu verbessern.For most queries, the query optimizer already generates the necessary statistics for a high-quality query plan; in a few cases, you need to create additional statistics with CREATE STATISTICS or modify the query design to improve query performance.

Weitere Informationen finden Sie unter Statistiken.To learn more, see Statistics.

Themenlinksymbol Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

-- Syntax for SQL Server and Azure SQL Database  
  
-- Create statistics on an external table  
CREATE STATISTICS statistics_name   
ON { table_or_indexed_view_name } ( column [ ,...n ] )   
    [ WITH FULLSCAN ] ;  
  
-- Create statistics on a regular table or indexed view  
CREATE STATISTICS statistics_name   
ON { table_or_indexed_view_name } ( column [ ,...n ] )   
    [ WHERE <filter_predicate> ]  
    [ WITH   
        [ [ FULLSCAN   
            [ [ , ] PERSIST_SAMPLE_PERCENT = { ON | OFF } ]    
          | SAMPLE number { PERCENT | ROWS }   
            [ [ , ] PERSIST_SAMPLE_PERCENT = { ON | OFF } ]    
          | <update_stats_stream_option> [ ,...n ]    
        [ [ , ] NORECOMPUTE ]   
        [ [ , ] INCREMENTAL = { ON | OFF } ] 
        [ [ , ] MAXDOP = max_degree_of_parallelism ]
    ] ;  
  
<filter_predicate> ::=   
    <conjunct> [AND <conjunct>]  
  
<conjunct> ::=  
    <disjunct> | <comparison>  
  
<disjunct> ::=  
        column_name IN (constant ,...)  
  
<comparison> ::=  
        column_name <comparison_op> constant  
  
<comparison_op> ::=  
    IS | IS NOT | = | <> | != | > | >= | !> | < | <= | !<  
    
<update_stats_stream_option> ::=  
    [ STATS_STREAM = stats_stream ]  
    [ ROWCOUNT = numeric_constant ]  
    [ PAGECOUNT = numeric_contant ] 
-- Syntax for Azure SQL Data Warehouse and Parallel Data Warehouse  
  
CREATE STATISTICS statistics_name   
    ON { database_name.schema_name.table_name | schema_name.table_name | table_name }
    ( column_name  [ ,...n ] )   
    [ WHERE <filter_predicate> ]  
    [ WITH {  
           FULLSCAN   
           | SAMPLE number PERCENT   
      }  
    ]  
[;]  
  
<filter_predicate> ::=   
    <conjunct> [AND <conjunct>]  
  
<conjunct> ::=  
    <disjunct> | <comparison>  
  
<disjunct> ::=  
        column_name IN (constant ,...)  
  
<comparison> ::=  
        column_name <comparison_op> constant  
  
<comparison_op> ::=  
    IS | IS NOT | = | <> | != | > | >= | !> | < | <= | !<  

ArgumenteArguments

statistics_namestatistics_name
Der Name der zu erstellenden Statistik.Is the name of the statistics to create.

table_or_indexed_view_nametable_or_indexed_view_name
Der Name der Tabelle, der indizierten Sicht oder der externen Tabelle, für die die Statistik erstellt werden soll.Is the name of the table, indexed view, or external table on which to create the statistics. Legen Sie einen qualifizierten Tabellennamen fest, um Statistiken für eine andere Datenbank zu erstellen.To create statistics on another database, specify a qualified table name.

Spalte [ ,...n]column [ ,...n]
Mindestens eine Spalte, die in den Statistiken enthalten sein soll.One or more columns to be included in the statistics. Die Spalten sollten von links nach rechts nach Priorität geordnet sein.The columns should be in priority order from left to right. Nur die erste Spalte wird zum Erstellen des Histrogramms verwendet.Only the first column is used for creating the histogram. Alle Spalten werden für spaltenübergreifende Statistiken verwendet, die als „Dichten“ bezeichnet werden.All columns are used for cross-column correlation statistics called densities.

Sie können beliebige Spalten angeben, die von folgenden Ausnahmen abgesehen als Indexschlüsselspalte angegeben werden können:You can specify any column that can be specified as an index key column with the following exceptions:

  • XML-, Volltext- und FILESTREAM-Spalten können nicht angegeben werden.Xml, full-text, and FILESTREAM columns cannot be specified.

  • Berechnete Spalten können nur angegeben werden, wenn die DARITHABORT-Datenbankeinstellung und die QUOTED_IDENTIFIER-Datenbankeinstellung auf ON festgelegt sind.Computed columns can be specified only if the ARITHABORT and QUOTED_IDENTIFIER database settings are ON.

  • Spalten des CLR-benutzerdefiniertne Typs können angegeben werden, wenn der Typ die binäre Reihenfolge unterstützt.CLR user-defined type columns can be specified if the type supports binary ordering. Berechnete Spalten, die als Methodenaufrufe einer Spalte eines benutzerdefinierten Typs definiert sind, können angegeben werden, wenn die Methoden als deterministisch gekennzeichnet sind.Computed columns defined as method invocations of a user-defined type column can be specified if the methods are marked deterministic.

WHERE <filter_predicate> Gibt einen Ausdruck zum Auswählen einer Teilmenge von Zeilen an, die beim Erstellen des Statistikobjekts eingeschlossen werden sollen.WHERE <filter_predicate> Specifies an expression for selecting a subset of rows to include when creating the statistics object. Statistiken, die mit einem Filterprädikat erstellt werden, werden als gefilterte Statistiken bezeichnet.Statistics that are created with a filter predicate are called filtered statistics. Im Filterprädikat werden einfache Vergleichsoperatoren verwendet. Es darf darin nicht auf eine berechnete Spalte, eine UDT-Spalte, eine Spalte mit einem räumlichen Datentyp oder eine Spalten mit dem hierarchyID-Datentyp verwiesen werden.The filter predicate uses simple comparison logic and cannot reference a computed column, a UDT column, a spatial data type column, or a hierarchyID data type column. Vergleiche mit NULL-Literalen sind mit den Vergleichsoperatoren nicht zulässig.Comparisons using NULL literals are not allowed with the comparison operators. Verwenden Sie stattdessen den IS NULL-Operator und den IS NOT NULL-Operator.Use the IS NULL and IS NOT NULL operators instead.

Es folgen einige Beispiele für Filterprädikate für die Production.BillOfMaterials-Tabelle:Here are some examples of filter predicates for the Production.BillOfMaterials table:

  • WHERE StartDate > '20000101' AND EndDate <= '20000630'

  • WHERE ComponentID IN (533, 324, 753)

  • WHERE StartDate IN ('20000404', '20000905') AND EndDate IS NOT NULL

Weitere Informationen zu Filterprädikaten finden Sie unter Create Filtered Indexes (Erstellen gefilterter Indizes).For more information about filter predicates, see Create Filtered Indexes.

FULLSCANFULLSCAN
Berechnet die Statistiken, indem alle Zeilen überprüft werden.Compute statistics by scanning all rows. FULLSCAN und SAMPLE 100 PERCENT führen zu gleichen Ergebnissen.FULLSCAN and SAMPLE 100 PERCENT have the same results. FULLSCAN kann nicht in Verbindung mit der SAMPLE-Option verwendet werden.FULLSCAN cannot be used with the SAMPLE option.

Wenn diese Option ausgelassen wird, verwendet SQL Server Stichproben, um die Statistiken zu erstellen. Zudem wird die Größe der Stichprobe bestimmt, die erforderlich ist, um einen hochwertigen Abfrageplan zu erstellen.When omitted, SQL Server uses sampling to create the statistics, and determines the sample size that is required to create a high quality query plan

SAMPLE Zahl { PERCENT | ROWS }SAMPLE number { PERCENT | ROWS }
Gibt den ungefähren Prozentsatz oder die ungefähre Anzahl von Zeilen in der Tabelle oder indizierten Sicht an, die vom Abfrageoptimierer beim Erstellen von Statistiken verwendet werden sollen.Specifies the approximate percentage or number of rows in the table or indexed view for the query optimizer to use when it creates statistics. Für PERCENT kann Zahlenwerte von 0 bis 100 annehmen, für ROWS kann Zahlenwerte von 0 bis zur Gesamtanzahl der Zeilen annehmen.For PERCENT, number can be from 0 through 100 and for ROWS, number can be from 0 to the total number of rows. Der tatsächliche Prozentsatz oder die tatsächliche Anzahl von Zeilen, die vom Abfrageoptimierer als Stichprobe entnommen werden, stimmt möglicherweise nicht mit dem angegebenen Prozentsatz oder der angegebenen Anzahl überein.The actual percentage or number of rows the query optimizer samples might not match the percentage or number specified. Der Abfrageoptimierer scannt z. B. alle Zeilen auf einer Datenseite.For example, the query optimizer scans all rows on a data page.

SAMPLE eignet sich für Sonderfälle, in denen der auf Standardstichproben beruhende Abfrageplan nicht optimal ist.SAMPLE is useful for special cases in which the query plan, based on default sampling, is not optimal. In den meisten Situationen muss SAMPLE nicht angegeben werden, da der Abfrageoptimierer automatisch Stichproben verwendet und die statistisch signifikante Stichprobengröße ermittelt, wie zum Erstellen hochwertiger Abfragepläne erforderlich.In most situations, it is not necessary to specify SAMPLE because the query optimizer already uses sampling and determines the statistically significant sample size by default, as required to create high-quality query plans.

SAMPLE kann nicht in Verbindung mit der Option FULLSCAN verwendet werden.SAMPLE cannot be used with the FULLSCAN option. Wenn weder SAMPLE noch FULLSCAN angegeben wurde, verwendet der Abfrageoptimierer Stichprobendaten und berechnet die Stichprobengröße anhand der Standardeinstellungen.When neither SAMPLE nor FULLSCAN is specified, the query optimizer uses sampled data and computes the sample size by default.

Es wird davon abgeraten, 0 PERCENT oder 0 ROWS anzugeben.We recommend against specifying 0 PERCENT or 0 ROWS. Wenn 0 PERCENT oder ROWS angegeben ist, wird das Statistikobjekt erstellt, es enthält jedoch keine Statistikdaten.When 0 PERCENT or ROWS is specified, the statistics object is created but does not contain statistics data.

PERSIST_SAMPLE_PERCENT = { ON | OFF }PERSIST_SAMPLE_PERCENT = { ON | OFF }
Bei ON behalten die Statistiken den bei der Erstellung angegebenen Prozentsatz für die Stichprobenentnahme für nachfolgende Updates bei, die keinen expliziten Prozentsatz für die Stichprobenentnahme angeben.When ON, the statistics will retain the creation sampling percentage for subsequent updates that do not explicitly specify a sampling percentage. Bei OFF wird der Prozentsatz für die Stichprobenentnahme in nachfolgenden Updates auf den Standardwert zurückgesetzt, sofern diese keinen expliziten Prozentsatz für die Stichprobenentnahme angeben.When OFF, statistics sampling percentage will get reset to default sampling in subsequent updates that do not explicitly specify a sampling percentage. Der Standardwert ist OFF.The default is OFF.

Hinweis

Wenn die Tabelle abgeschnitten wird, übernehmen alle Statistiken, die basierend auf dem abgeschnittenen HoBT erstellt wurden, wieder den Standardstichproben-Prozentsatz.If the table is truncated, all statistics built on the truncated HoBT will revert to using the default sampling percentage.

Gilt für: SQL Server 2016 (13.x)SQL Server 2016 (13.x) (ab SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 CU4) und höher (ab SQL Server 2017 (14.x)SQL Server 2017 (14.x) CU1).Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) (starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 CU4) and later (starting with SQL Server 2017 (14.x)SQL Server 2017 (14.x) CU1).

STATS_STREAM = stats_streamSTATS_STREAM =stats_stream

Nur für Informationszwecke identifiziert.Identified for informational purposes only. Wird nicht unterstützt.Not supported. Zukünftige Kompatibilität wird nicht sichergestellt.Future compatibility is not guaranteed.

NORECOMPUTENORECOMPUTE
Deaktiviert die AUTO_UPDATE_STATISTICS-Option zur automatischen Statistikaktualisierung für statistics_name.Disable the automatic statistics update option, AUTO_STATISTICS_UPDATE, for statistics_name. Wenn diese Option angegeben wird, schließt der Abfrageoptimierer alle laufenden Statistikupdates für statistics_name ab und deaktiviert zukünftige Updates.If this option is specified, the query optimizer will complete any in-progress statistics updates for statistics_name and disable future updates.

Entfernen Sie die Statistiken mit DROP STATISTICS, und führen Sie dann CREATE STATISTICS ohne die NORECOMPUTE-Option aus, um Statistikupdates wieder zu aktivieren.To re-enable statistics updates, remove the statistics with DROP STATISTICS and then run CREATE STATISTICS without the NORECOMPUTE option.

Warnung

Bei Verwendung dieser Option können suboptimale Abfragepläne entstehen.Using this option can produce suboptimal query plans. Es wird empfohlen, diese Option nur in Einzelfällen von einem qualifizierten Systemadministrator vornehmen zu lassen.We recommend using this option sparingly, and then only by a qualified system administrator.

Weitere Informationen über die Option AUTO_STATISTICS_UPDATE finden Sie unter ALTER DATABASE SET-Optionen (Transact-SQL).For more information about the AUTO_STATISTICS_UPDATE option, see ALTER DATABASE SET Options (Transact-SQL). Weitere Informationen zum Deaktivieren und erneuten Aktivieren von Statistikupdates finden Sie unter Statistiken.For more information about disabling and re-enabling statistics updates, see Statistics.

INCREMENTAL = { ON | OFF }INCREMENTAL = { ON | OFF }
Bei ON wird die Statistik pro Partition erstellt.When ON, the statistics created are per partition statistics. Bei OFF werden Statistiken für alle Partitionen kombiniert.When OFF, stats are combined for all partitions. Der Standardwert ist OFF.The default is OFF.

Wenn Statistiken pro Partition nicht unterstützt werden, wird ein Fehler generiert.If per partition statistics are not supported an error is generated. Inkrementelle Statistiken werden für folgende Statistiktypen nicht unterstützt:Incremental stats are not supported for following statistics types:

  • Statistiken, die mit Indizes erstellt wurden, die über keine Partitionsausrichtung mit der Basistabelle verfügen.Statistics created with indexes that are not partition-aligned with the base table.
  • Statistiken, die für lesbare sekundäre Always On-Datenbanken erstellt wurden.Statistics created on Always On readable secondary databases.
  • Statistiken, die für schreibgeschützte Datenbanken erstellt wurden.Statistics created on read-only databases.
  • Statistiken, die für gefilterte Indizes erstellt wurden.Statistics created on filtered indexes.
  • Statistiken, die für Sichten erstellt wurden.Statistics created on views.
  • Statistiken, die für interne Tabellen erstellt wurden.Statistics created on internal tables.
  • Statistiken, die mit räumlichen Indizes oder XML-Indizes erstellt wurden.Statistics created with spatial indexes or XML indexes.

Gilt für: SQL Server 2014 (12.x)SQL Server 2014 (12.x) und höher.Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) and later.

MAXDOP = max_degree_of_parallelismMAXDOP = max_degree_of_parallelism
Gilt für: SQL ServerSQL Server (Ab SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x)SQL Server 2017 (14.x) CU3).Applies to: SQL ServerSQL Server (Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 and SQL Server 2017 (14.x)SQL Server 2017 (14.x) CU3).

Überschreibt die Konfigurationsoption max degree of parallelism (Max. Grad an Parallelität) für die Dauer des Statistikvorgangs.Overrides the max degree of parallelism configuration option for the duration of the statistic operation. Weitere Informationen finden Sie unter Konfigurieren der Serverkonfigurationsoption Max. Grad an Parallelität.For more information, see Configure the max degree of parallelism Server Configuration Option. Sie können mit MAXDOP die Anzahl der Prozessoren begrenzen, die bei der Ausführung paralleler Pläne verwendet werden.Use MAXDOP to limit the number of processors used in a parallel plan execution. Maximal sind 64 Prozessoren zulässig.The maximum is 64 processors.

max_degree_of_parallelism kann folgende Werte haben:max_degree_of_parallelism can be:

11
Unterdrückt das Generieren paralleler Pläne.Suppresses parallel plan generation.

>1>1
Beschränkt die maximale Anzahl der Prozessoren, die bei einem parallelen Statistikvorgang verwendet werden, je nach aktueller Systemauslastung auf die angegebene Zahl oder einen niedrigeren Wert.Restricts the maximum number of processors used in a parallel statistic operation to the specified number or fewer based on the current system workload.

0 (Standard)0 (default)
Verwendet abhängig von der aktuellen Systemarbeitsauslastung die tatsächliche Anzahl von Prozessoren oder weniger Prozessoren.Uses the actual number of processors or fewer based on the current system workload.

<update_stats_stream_option> Nur für Informationszwecke identifiziert.Identified for informational purposes only. Wird nicht unterstützt.Not supported. Zukünftige Kompatibilität wird nicht sichergestellt.Future compatibility is not guaranteed.<update_stats_stream_option> Nur für Informationszwecke identifiziert.Identified for informational purposes only. Wird nicht unterstützt.Not supported. Zukünftige Kompatibilität wird nicht sichergestellt.Future compatibility is not guaranteed.

BerechtigungenPermissions

Erfordert eine der folgenden Berechtigungen:Requires one of these permissions:

  • ALTER TABLEALTER TABLE
  • Der Benutzer ist der Tabellenbesitzer.User is the table owner
  • Mitgliedschaft in der festen Datenbankrolle db_ddladmin.Membership in the db_ddladmin fixed database role

Allgemeine HinweiseGeneral Remarks

SQL ServerSQL Server kann tempdb verwenden, um die als Stichprobe entnommenen Zeilen vor dem Erstellen der Statistiken zu sortieren.can use tempdb to sort the sampled rows before building statistics.

Statistiken für externe TabellenStatistics for external tables

Beim Erstellen von Statistiken für externe Tabellen importiert SQL ServerSQL Server die externe Tabelle in eine temporäre SQL ServerSQL Server-Tabelle und erstellt anschließend die Statistiken.When creating external table statistics, SQL ServerSQL Server imports the external table into a temporary SQL ServerSQL Server table, and then creates the statistics. Bei Statistiken für Stichproben werden nur die als Stichprobe entnommenen Zeilen importiert.For samples statistics, only the sampled rows are imported. Bei einer großen externen Tabelle ist es wesentlich schneller, die Standardstichprobenentnahme statt der FULL SCAN-Option zu verwenden.If you have a large external table, it will be much faster to use the default sampling instead of the full scan option.

Statistiken mit einer gefilterten BedingungStatistics with a filtered condition

Gefilterte Statistiken können die Abfrageleistung für Abfragen verbessern, bei denen aus klar definierten Teilmengen von Daten ausgewählt wird.Filtered statistics can improve query performance for queries that select from well-defined subsets of data. Gefilterte Statistiken verwenden ein Filterprädikat in der WHERE-Klausel, um die Teilmenge von Daten auszuwählen, die in den Statistiken enthalten ist.Filtered statistics use a filter predicate in the WHERE clause to select the subset of data that is included in the statistics.

Verwendung von CREATE STATISTICSWhen to Use CREATE STATISTICS

Weitere Informationen dazu, wann UPDATE STATISTICS verwendet werden sollte, finden Sie unter Statistiken.For more information about when to use CREATE STATISTICS, see Statistics.

Verweisen auf Abhängigkeiten für gefilterte StatistikenReferencing Dependencies for Filtered Statistics

Die sys.sql_expression_dependencies-Katalogsicht kennzeichnet jede Spalte im gefilterten Statistikprädikat als eine verweisende Abhängigkeit.The sys.sql_expression_dependencies catalog view tracks each column in the filtered statistics predicate as a referencing dependency. Überlegen Sie genau, welche Vorgänge Sie für Tabellenspalten ausführen, bevor Sie eine gefilterte Statistik erstellen, da Sie die Definition einer Tabellenspalte, die für ein Prädikat einer gefilterten Statistik definiert wurde, nicht löschen, umbenennen oder ändern können.Consider the operations that you perform on table columns before creating filtered statistics because you cannot drop, rename, or alter the definition of a table column that is defined in a filtered statistics predicate.

EinschränkungenLimitations and Restrictions

  • Das Aktualisieren von Statistiken bei externen Tabellen wird nicht unterstützt.Updating statistics is not supported on external tables. Zum Aktualisieren einer Statistik müssen Sie die Statistik löschen und neu erstellen.To update statistics on an external table, drop and re-create the statistics.
  • Sie können bis zu 64 Spalten pro Statistikobjekt auflisten.You can list up to 64 columns per statistics object.
  • Die Option MAXDOP ist nicht mit den Optionen STATS_STREAM, ROWCOUNT und PAGECOUNT kompatibel.The MAXDOP option is not compatible with STATS_STREAM, ROWCOUNT and PAGECOUNT options.
  • Die Option MAXDOP ist, falls verwendet, durch die Einstellung „MAX_DOP“ der Resource Governor-Arbeitsauslastungsgruppe eingeschränkt.The MAXDOP option is limited by the Resource Governor workload group MAX_DOP setting, if used.

BeispieleExamples

In den Beispielen wird die Datenbank „AdventureWorks“ verwendet.Examples use the AdventureWorks database.

A.A. Verwenden von CREATE STATISTICS mit SAMPLE number PERCENTUsing CREATE STATISTICS with SAMPLE number PERCENT

Im folgenden Beispiel wird die ContactMail1-Statistik erstellt. Dabei wird eine zufällige Stichprobe von 5 Prozent der Spalten BusinessEntityID und EmailPromotion aus der Tabelle Person der AdventureWorks2012AdventureWorks2012-Datenbank verwendet.The following example creates the ContactMail1 statistics, using a random sample of 5 percent of the BusinessEntityID and EmailPromotion columns of the Person table of the AdventureWorks2012AdventureWorks2012 database.

CREATE STATISTICS ContactMail1  
    ON Person.Person (BusinessEntityID, EmailPromotion)  
    WITH SAMPLE 5 PERCENT;  

B.B. Verwenden von CREATE STATISTICS mit FULLSCAN und NORECOMPUTEUsing CREATE STATISTICS with FULLSCAN and NORECOMPUTE

Im folgenden Beispiel werden die NamePurchase-Statistiken für alle Zeilen in der BusinessEntityID-Spalte und der EmailPromotion-Spalte der Person-Tabelle erstellt. Dabei wird die automatische Neuberechnung von Statistiken deaktiviert.The following example creates the NamePurchase statistics for all rows in the BusinessEntityID and EmailPromotion columns of the Person table and disables automatic recomputing of statistics.

CREATE STATISTICS NamePurchase  
    ON AdventureWorks2012.Person.Person (BusinessEntityID, EmailPromotion)  
    WITH FULLSCAN, NORECOMPUTE;  

C.C. Erstellen gefilterter Statistiken mithilfe von CREATE STATISTICSUsing CREATE STATISTICS to create filtered statistics

Im folgenden Beispiel wird die gefilterte Statistik ContactPromotion1 erstellt.The following example creates the filtered statistics ContactPromotion1. Das Datenbank-EngineDatabase Engine nimmt 50 Prozent der Daten in die Stichprobe auf und wählt dann die Zeilen aus, in denen EmailPromotion gleich 2 ist.The Datenbank-EngineDatabase Engine samples 50 percent of the data and then selects the rows with EmailPromotion equal to 2.

CREATE STATISTICS ContactPromotion1  
    ON Person.Person (BusinessEntityID, LastName, EmailPromotion)  
WHERE EmailPromotion = 2  
WITH SAMPLE 50 PERCENT;  
GO  

D.D. Erstellen von Statistiken für eine externe TabelleCreate statistics on an external table

Sie müssen beim Erstellen von Statistiken für eine externe Tabelle abgesehen von der Bereitstellung einer Liste der Spalten lediglich entscheiden, ob die Statistiken durch Stichprobenentnahme aus den Zeilen oder durch einen Scan aller Zeilen erstellt werden soll.The only decision you need to make when you create statistics on an external table, besides providing the list of columns, is whether to create the statistics by sampling the rows or by scanning all of the rows.

Da SQL ServerSQL Server Daten aus der externen Tabelle in eine temporäre Tabelle importiert, um Statistiken zu erstellen, nimmt die FULL SCAN-Option wesentlich mehr Zeit in Anspruch.Since SQL ServerSQL Server imports data from the external table into a temporary table to create statistics, the full scan option will take much longer. Bei einer großen Tabelle ist die Standardmethode für die Stichprobenentnahme in der Regel ausreichend.For a large table, the default sampling method is usually sufficient.

--Create statistics on an external table and use default sampling.  
CREATE STATISTICS CustomerStats1 ON DimCustomer (CustomerKey, EmailAddress);  
  
--Create statistics on an external table and scan all the rows  
CREATE STATISTICS CustomerStats1 ON DimCustomer (CustomerKey, EmailAddress) WITH FULLSCAN;  

E.E. Verwenden von CREATE STATISTICS mit FULLSCAN und PERSIST_SAMPLE_PERCENTUsing CREATE STATISTICS with FULLSCAN and PERSIST_SAMPLE_PERCENT  

Im folgenden Beispiel werden die NamePurchase-Statistiken für alle Zeilen in den Spalten BusinessEntityID und EmailPromotion der Tabelle Person erstellt. Zudem wird für alle nachfolgenden Updates, die keinen expliziten Prozentsatz für die Stichprobenentnahme angeben, ein Prozentsatz von 100 Prozent für die Stichprobenentnahme festgelegt.The following example creates the NamePurchase statistics for all rows in the BusinessEntityID and EmailPromotion columns of the Person table and sets a 100 percent sampling percentage for all subsequent updates that do not explicitly specify a sampling percentage.  

CREATE STATISTICS NamePurchase  
    ON AdventureWorks2012.Person.Person (BusinessEntityID, EmailPromotion)  
    WITH FULLSCAN, PERSIST_SAMPLE_PERCENT = ON;  

Die Beispiele verwenden die Datenbank „AdventureWorksDW“.Examples using AdventureWorksDW database.

F.F. Erstellen von Statistiken für zwei SpaltenCreate statistics on two columns

Im folgenden Beispiel werden die CustomerStats1-Statistiken basierend auf den Spalten CustomerKey und EmailAddress der Tabelle DimCustomer erstellt.The following example creates the CustomerStats1 statistics, based on the CustomerKey and EmailAddress columns of the DimCustomer table. Die Statistiken werden basierend auf einer statistisch relevanten Stichprobenentnahme der Zeilen in der Customer-Tabelle erstellt.The statistics are created based on a statistically significant sampling of the rows in the Customer table.

CREATE STATISTICS CustomerStats1 ON DimCustomer (CustomerKey, EmailAddress);  

G.G. Erstellen von Statistiken mithilfe eines vollständigen ScansCreate statistics by using a full scan

Im folgenden Beispiel wird die Statistik CustomerStatsFullScan basierend auf allen Zeilen in der Tabelle DimCustomer erstellt.The following example creates the CustomerStatsFullScan statistics, based on scanning all of the rows in the DimCustomer table.

CREATE STATISTICS CustomerStatsFullScan 
ON DimCustomer (CustomerKey, EmailAddress) WITH FULLSCAN;  

H.H. Erstellen von Statistiken durch Angeben des StichprobenprozentsatzesCreate statistics by specifying the sample percentage

Im folgenden Beispiel wird die Statistik CustomerStatsSampleScan basierend auf einem Scan von 50 Prozent der Zeilen in der Tabelle DimCustomer erstellt.The following example creates the CustomerStatsSampleScan statistics, based on scanning 50 percent of the rows in the DimCustomer table.

CREATE STATISTICS CustomerStatsSampleScan 
ON DimCustomer (CustomerKey, EmailAddress) WITH SAMPLE 50 PERCENT;  

Weitere InformationenSee Also

Statistiken Statistics
UPDATE STATISTICS (Transact-SQL) UPDATE STATISTICS (Transact-SQL)
sp_updatestats (Transact-SQL) sp_updatestats (Transact-SQL)
DBCC SHOW_STATISTICS (Transact-SQL) DBCC SHOW_STATISTICS (Transact-SQL)
DROP STATISTICS (Transact-SQL) DROP STATISTICS (Transact-SQL)
sys.stats (Transact-SQL) sys.stats (Transact-SQL)
sys.stats_columns (Transact-SQL)sys.stats_columns (Transact-SQL)