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

S’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database OuiAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance ouiAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics ouiParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data WarehouseS’applique à :Applies to: ouiSQL ServerSQL Server (toutes les versions prises en charge) yesSQL ServerSQL Server (all supported versions) OuiAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database OuiAzure SQL Managed InstanceAzure SQL Managed InstanceYesAzure SQL Managed InstanceAzure SQL Managed Instance ouiAzure Synapse AnalyticsAzure Synapse AnalyticsyesAzure Synapse AnalyticsAzure Synapse Analytics ouiParallel Data WarehouseParallel Data WarehouseyesParallel Data WarehouseParallel Data Warehouse

Crée des statistiques d’optimisation de requête sur une ou plusieurs colonnes d’une table, d’une vue indexée ou d’une table externe.Creates query optimization statistics on one or more columns of a table, an indexed view, or an external table. Pour la plupart des requêtes, l'optimiseur de requête génère déjà les statistiques utiles à un plan de requête de haute qualité ; dans certains cas, vous devez créer des statistiques supplémentaires avec CREATE STATISTICS ou modifier la conception des requêtes pour améliorer les performances des requêtes.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.

Pour plus d’informations, consultez Statistiques.To learn more, see Statistics.

Icône du lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

-- 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 Synapse Analytics 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 | = | <> | != | > | >= | !> | < | <= | !<  

Notes

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 et versions antérieures, consultez Versions antérieures de la documentation.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumentsArguments

statistics_namestatistics_name
Nom des statistiques à créer.Is the name of the statistics to create.

table_or_indexed_view_nametable_or_indexed_view_name
Nom de la table, vue indexée ou table externe pour laquelle créer les statistiques.Is the name of the table, indexed view, or external table on which to create the statistics. Pour créer des statistiques sur une autre base de données, spécifiez un nom de table qualifié.To create statistics on another database, specify a qualified table name.

column [ ,...n]column [ ,...n]
Une ou plusieurs colonnes à inclure dans les statistiques.One or more columns to be included in the statistics. Les colonnes doivent être spécifiées par ordre de priorité de gauche à droite.The columns should be in priority order from left to right. Seule la première colonne est utilisée pour la création de l’histogramme.Only the first column is used for creating the histogram. Toutes les colonnes sont utilisées pour les statistiques de corrélation entre les colonnes appelées densités.All columns are used for cross-column correlation statistics called densities.

Vous pouvez indiquer comme base de calcul des statistiques toute colonne pouvant être spécifiée en tant que colonne de clé d'index, sauf pour les exceptions suivantes :You can specify any column that can be specified as an index key column with the following exceptions:

  • Les colonnes Xml, de texte intégral et FILESTREAM ne peuvent pas être spécifiées.Xml, full-text, and FILESTREAM columns cannot be specified.

  • Les colonnes calculées ne peuvent être indiquées que si les paramètres de base de données ARITHABORT et QUOTED_IDENTIFIER ont la valeur ON.Computed columns can be specified only if the ARITHABORT and QUOTED_IDENTIFIER database settings are ON.

  • Toute colonne de type CLR définie par l'utilisateur peut être spécifiée si son type prend en charge l'ordre de tri binaire.CLR user-defined type columns can be specified if the type supports binary ordering. Les colonnes calculées définies en tant qu'appels à des méthodes d'une colonne de type défini par l'utilisateur peuvent être précisées si les méthodes en question sont marquées comme étant déterministes.Computed columns defined as method invocations of a user-defined type column can be specified if the methods are marked deterministic.

WHERE <filter_predicate> Spécifie une expression permettant de sélectionner un sous-ensemble des lignes à inclure lors de la création de l'objet de statistiques.WHERE <filter_predicate> Specifies an expression for selecting a subset of rows to include when creating the statistics object. Les statistiques créées avec un prédicat de filtre sont appelées des statistiques filtrées.Statistics that are created with a filter predicate are called filtered statistics. Le prédicat de filtre utilise une logique de comparaison simple et ne peut pas référencer une colonne calculée, une colonne UDT, une colonne de type de données spatiales ou une colonne de type de données hierarchyID.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. Les comparaisons à l'aide de littéraux NULL ne sont pas autorisées avec les opérateurs de comparaison.Comparisons using NULL literals are not allowed with the comparison operators. Utilisez les opérateurs IS NULL et IS NOT NULL à la place.Use the IS NULL and IS NOT NULL operators instead.

Voici quelques exemples de prédicats de filtre pour la table Production.BillOfMaterials :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

Pour plus d’informations sur les prédicats de filtre, consultez Créer des index filtrés.For more information about filter predicates, see Create Filtered Indexes.

FULLSCANFULLSCAN
Calcule les statistiques en analysant toutes les lignes.Compute statistics by scanning all rows. FULLSCAN et SAMPLE 100 PERCENT ont les mêmes résultats.FULLSCAN and SAMPLE 100 PERCENT have the same results. Cette option ne peut pas être utilisée avec l'option SAMPLE.FULLSCAN cannot be used with the SAMPLE option.

Si elle est omise, SQL Server utilise l’échantillonnage pour créer les statistiques, et détermine la taille d’échantillon nécessaire pour créer un plan de requête de haute qualité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 number { PERCENT | ROWS }SAMPLE number { PERCENT | ROWS }
Spécifie le pourcentage ou nombre de lignes approximatif dans la table ou vue indexée devant être utilisé par l'optimiseur de requête lors de la création des statistiques.Specifies the approximate percentage or number of rows in the table or indexed view for the query optimizer to use when it creates statistics. Pour PERCENT, number peut être compris entre 0 et 100, et pour ROWS, number peut être compris entre 0 et le nombre total de lignes.For PERCENT, number can be from 0 through 100 and for ROWS, number can be from 0 to the total number of rows. Le pourcentage ou nombre de lignes réel échantillonné par l'optimiseur de requête peut ne pas correspondre au pourcentage ou nombre spécifié.The actual percentage or number of rows the query optimizer samples might not match the percentage or number specified. Par exemple, l'optimiseur de requête analyse toutes les lignes d'une page de données.For example, the query optimizer scans all rows on a data page.

SAMPLE est utile pour les cas spéciaux dans lesquels le plan de requête, basé sur l'échantillonnage par défaut, n'est pas optimal.SAMPLE is useful for special cases in which the query plan, based on default sampling, is not optimal. Dans la plupart des situations, il n'est pas nécessaire de spécifier SAMPLE, car l'optimiseur de requête utilise déjà l'échantillonnage et détermine la taille d'échantillon statistiquement significative par défaut, comme requis pour créer des plans de requête de haute qualité.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 ne peut pas être utilisé avec l'option FULLSCAN.SAMPLE cannot be used with the FULLSCAN option. Lorsque ni SAMPLE ni FULLSCAN n'est spécifié, l'optimiseur de requête utilise les données échantillonnées et calcule la taille d'échantillon par défaut.When neither SAMPLE nor FULLSCAN is specified, the query optimizer uses sampled data and computes the sample size by default.

Il est déconseillé de spécifier 0 PERCENT ou 0 ROWS.We recommend against specifying 0 PERCENT or 0 ROWS. Lorsque 0 PERCENT ou ROWS est spécifié, l'objet de statistiques est créé mais ne contient pas de données de statistiques.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 }
Si vous spécifiez ON, les statistiques conserveront le pourcentage d’échantillonnage de création pour les mises à jour ultérieures qui ne spécifient pas explicitement un pourcentage d’échantillonnage.When ON, the statistics will retain the creation sampling percentage for subsequent updates that do not explicitly specify a sampling percentage. Si vous spécifiez OFF, le pourcentage d’échantillonnage de statistiques sera réinitialisé à la valeur d’échantillonnage par défaut lors des mises à jour ultérieures qui ne spécifient pas explicitement un pourcentage d’échantillonnage.When OFF, statistics sampling percentage will get reset to default sampling in subsequent updates that do not explicitly specify a sampling percentage. La valeur par défaut est OFF.The default is OFF.

Notes

Si la table est tronquée, toutes les statistiques générées sur le HoBT tronqué sont rétablies à l’aide du pourcentage d’échantillonnage par défaut.If the table is truncated, all statistics built on the truncated HoBT will revert to using the default sampling percentage.

S’applique à : SQL Server 2016 (13.x)SQL Server 2016 (13.x) (à partir de SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP1 CU4) et versions ultérieures (à partir de 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

Identifié à titre d'information uniquement.Identified for informational purposes only. Non pris en charge.Not supported. La compatibilité future n'est pas garantie.Future compatibility is not guaranteed.

NORECOMPUTENORECOMPUTE
Désactive l’option de mise à jour automatique des statistiques, AUTO_UPDATE_STATISTICS, pour statistics_name.Disable the automatic statistics update option, AUTO_STATISTICS_UPDATE, for statistics_name. Si cette option est spécifiée, l’optimiseur de requête effectue les mises à jour des statistiques en cours d’exécution pour statistics_name et désactive les mises à jour ultérieures.If this option is specified, the query optimizer will complete any in-progress statistics updates for statistics_name and disable future updates.

Pour réactiver la mise à jour des statistiques, supprimez les statistiques à l’aide de DROP STATISTICS, puis exécutez CREATE STATISTICS sans l’option NORECOMPUTE.To re-enable statistics updates, remove the statistics with DROP STATISTICS and then run CREATE STATISTICS without the NORECOMPUTE option.

Avertissement

L'utilisation de cette option peut produire des plans de requête non optimaux.Using this option can produce suboptimal query plans. Nous recommandons d'utiliser cette option avec parcimonie et uniquement par un administrateur système qualifié.We recommend using this option sparingly, and then only by a qualified system administrator.

Pour plus d’informations sur l’option AUTO_UPDATE_STATISTICS, consultez Options ALTER DATABASE SET (Transact-SQL).For more information about the AUTO_STATISTICS_UPDATE option, see ALTER DATABASE SET Options (Transact-SQL). Pour plus d’informations sur la désactivation et la réactivation des mises à jour des statistiques, consultez Statistiques.For more information about disabling and re-enabling statistics updates, see Statistics.

INCREMENTAL = { ON | OFF }INCREMENTAL = { ON | OFF }
Si la valeur ON est définie, les statistiques sont créées par partition.When ON, the statistics created are per partition statistics. Si la valeur OFF est définie, les statistiques sont combinées pour toutes les partitions.When OFF, stats are combined for all partitions. La valeur par défaut est OFF.The default is OFF.

Si les statistiques par partition ne sont pas prises en charge, une erreur est générée.If per partition statistics are not supported an error is generated. Les statistiques incrémentielles ne sont pas prises en charge pour les types de statistiques suivants :Incremental stats are not supported for following statistics types:

  • statistiques créées avec des index qui ne sont pas alignés sur les partitions avec la table de base ;Statistics created with indexes that are not partition-aligned with the base table.
  • statistiques créées sur les bases de données secondaires lisibles Always On ;Statistics created on Always On readable secondary databases.
  • statistiques créées sur les bases de données en lecture seule ;Statistics created on read-only databases.
  • statistiques créées sur les index filtrés ;Statistics created on filtered indexes.
  • statistiques créées sur les vues ;Statistics created on views.
  • statistiques créées sur les tables internes ;Statistics created on internal tables.
  • Statistiques créées avec les index spatiaux ou les index XML.Statistics created with spatial indexes or XML indexes.

S’applique à : SQL Server 2014 (12.x)SQL Server 2014 (12.x) et versions ultérieures.Applies to: SQL Server 2014 (12.x)SQL Server 2014 (12.x) and later.

MAXDOP = max_degree_of_parallelismMAXDOP = max_degree_of_parallelism
S’applique à : SQL ServerSQL Server (à compter de SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 et 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).

Remplace l’option de configuration max degree of parallelism pendant la durée de l’opération statistique.Overrides the max degree of parallelism configuration option for the duration of the statistic operation. Pour plus d’informations, consultez Configurer l’option de configuration du serveur max degree of parallelism.For more information, see Configure the max degree of parallelism Server Configuration Option. Utilisez MAXDOP pour limiter le nombre de processeurs utilisés dans une exécution de plan parallèle.Use MAXDOP to limit the number of processors used in a parallel plan execution. Le nombre maximal de processeurs est égal à 64.The maximum is 64 processors.

max_degree_of_parallelism peut avoir la valeur :max_degree_of_parallelism can be:

11
Supprime la création de plans parallèles.Suppresses parallel plan generation.

>1>1
Limite le nombre maximal de processeurs utilisés dans une opération statistique parallèle au nombre défini ou à un nombre inférieur en fonction de la charge de travail actuelle du système.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 (valeur par défaut)0 (default)
Utilise le nombre réel de processeurs ou un nombre de processeurs inférieur en fonction de la charge de travail actuelle du système.Uses the actual number of processors or fewer based on the current system workload.

<update_stats_stream_option> Identifié à titre d'information uniquement.Identified for informational purposes only. Non pris en charge.Not supported. La compatibilité future n'est pas garantie.Future compatibility is not guaranteed.<update_stats_stream_option> Identifié à titre d'information uniquement.Identified for informational purposes only. Non pris en charge.Not supported. La compatibilité future n'est pas garantie.Future compatibility is not guaranteed.

AutorisationsPermissions

Nécessite l’une de ces autorisations :Requires one of these permissions:

  • ALTER TABLEALTER TABLE
  • L’utilisateur est le propriétaire de la tableUser is the table owner
  • L’appartenance au rôle de base de données fixe db_ddladminMembership in the db_ddladmin fixed database role

Remarques d'ordre généralGeneral Remarks

SQL ServerSQL Server peut utiliser tempdb pour trier les lignes échantillonnées avant de générer des statistiques.can use tempdb to sort the sampled rows before building statistics.

Statistiques pour les tables externesStatistics for external tables

Lors de la création de statistiques de table externe, SQL ServerSQL Server importe la table externe dans une table SQL ServerSQL Server temporaire, puis crée les statistiques.When creating external table statistics, SQL ServerSQL Server imports the external table into a temporary SQL ServerSQL Server table, and then creates the statistics. Pour les échantillons de statistiques, seules les lignes échantillonnées sont importées.For samples statistics, only the sampled rows are imported. Si vous avez une grande table externe, il est beaucoup plus rapide d’utiliser l’échantillonnage par défaut au lieu de l’option d’analyse complète.If you have a large external table, it will be much faster to use the default sampling instead of the full scan option.

Statistiques avec une condition filtréeStatistics with a filtered condition

Les statistiques filtrées peuvent améliorer les performances des requêtes qui effectuent des sélections dans des sous-ensembles bien définis de données.Filtered statistics can improve query performance for queries that select from well-defined subsets of data. Elles utilisent un prédicat de filtre dans la clause WHERE pour sélectionner le sous-ensemble de données qui est inclus dans les statistiques.Filtered statistics use a filter predicate in the WHERE clause to select the subset of data that is included in the statistics.

Quand utiliser CREATE STATISTICSWhen to Use CREATE STATISTICS

Pour plus d’informations sur le moment où CREATE STATISTICS doit être utilisé, consultez Statistiques.For more information about when to use CREATE STATISTICS, see Statistics.

Dépendances des références pour les statistiques filtréesReferencing Dependencies for Filtered Statistics

La vue de catalogue sys.sql_expression_dependencies suit chaque colonne du prédicat de statistiques filtrées en tant que dépendance de référence.The sys.sql_expression_dependencies catalog view tracks each column in the filtered statistics predicate as a referencing dependency. Réfléchissez aux opérations que vous effectuez sur les colonnes de table avant de créer des statistiques filtrées car vous ne pouvez pas supprimer, renommer, ni modifier la définition d'une colonne de table qui est définie dans un prédicat de statistiques filtrées.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.

Limitations et restrictionsLimitations and Restrictions

  • La mise à jour des statistiques n’est pas prise en charge sur les tables externes.Updating statistics is not supported on external tables. Pour mettre à jour des statistiques sur une table externe, supprimez et recréez les statistiques.To update statistics on an external table, drop and re-create the statistics.
  • Vous pouvez afficher jusqu’à 64 colonnes par objet de statistiques.You can list up to 64 columns per statistics object.
  • L’option MAXDOP n’est pas compatible avec les options STATS_STREAM, ROWCOUNT et PAGECOUNT.The MAXDOP option is not compatible with STATS_STREAM, ROWCOUNT and PAGECOUNT options.
  • L’option MAXDOP est limitée par le paramètre MAX_DOP du groupe de charge de travail de Resource Governor, le cas échéant.The MAXDOP option is limited by the Resource Governor workload group MAX_DOP setting, if used.
  • L’utilisation de CREATE STATISTICS et DROP STATISTICS sur les tables externes n’est pas prise en charge dans Azure SQL Database.CREATE and DROP STATISTICS on external tables are not supported in Azure SQL Database.

ExemplesExamples

Les exemples utilisent la base de données AdventureWorks.Examples use the AdventureWorks database.

R.A. Utilisation de CREATE STATISTICS avec SAMPLE number PERCENTUsing CREATE STATISTICS with SAMPLE number PERCENT

L'exemple suivant crée les statistiques ContactMail1, à l'aide d'un exemple aléatoire de 5 pour cent des colonnes BusinessEntityID et EmailPromotion de la table Person de la base de données AdventureWorks2012AdventureWorks2012.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. Utilisation de CREATE STATISTICS avec FULLSCAN et NORECOMPUTEUsing CREATE STATISTICS with FULLSCAN and NORECOMPUTE

L'exemple suivant crée les statistiques NamePurchase pour toutes les lignes des colonnes BusinessEntityID et EmailPromotion de la table Person et désactive le recalcul automatique des statistiques.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. Utilisation de CREATE STATISTICS pour créer des statistiques filtréesUsing CREATE STATISTICS to create filtered statistics

L'exemple suivant crée les statistiques filtrées ContactPromotion1.The following example creates the filtered statistics ContactPromotion1. Le Moteur de base de donnéesDatabase Engine échantillonne 50 pour cent des données, puis sélectionne toutes les lignes pour lesquelles EmailPromotion est égal à 2.The Moteur de base de donnéesDatabase 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. Créer des statistiques sur une table externeCreate statistics on an external table

La seule décision que vous devez prendre quand vous créez des statistiques sur une table externe, en plus de fournir la liste des colonnes, est de savoir si vous allez créer les statistiques en échantillonnant les lignes ou en analysant toutes les lignes.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. L’utilisation de CREATE STATISTICS et DROP STATISTICS sur les tables externes n’est pas prise en charge dans Azure SQL Database.CREATE and DROP STATISTICS on external tables are not supported in Azure SQL Database.

Étant donné que SQL ServerSQL Server importe les données de la table externe vers une table temporaire pour créer les statistiques, l’option d’analyse complète prendra beaucoup plus de temps.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. Pour une table volumineuse, la méthode d’échantillonnage par défaut est généralement suffisante.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. Utilisation de CREATE STATISTICS avec FULLSCAN et PERSIST_SAMPLE_PERCENTUsing CREATE STATISTICS with FULLSCAN and PERSIST_SAMPLE_PERCENT  

L’exemple suivant crée les statistiques NamePurchase pour toutes les lignes des colonnes BusinessEntityID et EmailPromotion de la table Person, et définit un pourcentage d’échantillonnage égal à 100 pour toutes les mises à jour ultérieures qui ne spécifient pas explicitement un pourcentage d’échantillonnage.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;  

Exemples avec la base de données AdventureWorksDW.Examples using AdventureWorksDW database.

F.F. Créer des statistiques sur deux colonnesCreate statistics on two columns

L’exemple suivant crée les statistiques CustomerStats1, en fonction des colonnes CustomerKey et EmailAddress de la table DimCustomer.The following example creates the CustomerStats1 statistics, based on the CustomerKey and EmailAddress columns of the DimCustomer table. Les statistiques sont créées d’après un échantillon statistiquement significatif des lignes dans la table Customer.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. Créer des statistiques à l’aide d’une analyse complèteCreate statistics by using a full scan

L’exemple suivant crée les statistiques CustomerStatsFullScan, en fonction de l’analyse de toutes les lignes dans la table DimCustomer.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. Créer des statistiques en spécifiant le pourcentage d’échantillonnageCreate statistics by specifying the sample percentage

L’exemple suivant crée les statistiques CustomerStatsSampleScan, en fonction de l’analyse de 50 pour cent des lignes dans la table DimCustomer.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;  

Voir aussiSee Also

Statistiques 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)