sp_createstats (Transact-SQL)

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

CREATE STATISTICS ステートメントを呼び出して、統計オブジェクトの最初の列ではない列に対して単一列の統計を作成します。 統計を 1 列ずつ作成すると、ヒストグラムの数が増えて、カーディナリティの推定、クエリ プラン、およびクエリのパフォーマンスが向上します。 統計オブジェクトの最初の列にはヒストグラムがあります。他の列にはヒストグラムがありません。

sp_createstatsは、クエリの実行時間が重要であり、クエリ オプティマイザーが単一列の統計を生成するのを待つことができず、ベンチマークなどのアプリケーションに役立ちます。 ほとんどの場合、sp_createstatsを使用する必要はありません。クエリ オプティマイザーは、 AUTO_CREATE_STATISTICS オプションがオンのときにクエリ プランを改善するために、必要に応じて単一列の統計を生成します。

統計の詳細については、「統計」を参照してください。 単一列統計の生成の詳細については、「ALTER DATABASE SET Options (Transact-SQL)」AUTO_CREATE_STATISTICS オプションを参照してください。

Transact-SQL 構文表記規則

構文

  
sp_createstats   
    [   [ @indexonly =   ] { 'indexonly'   | 'NO' } ]   
    [ , [ @fullscan =    ] { 'fullscan'    | 'NO' } ]   
    [ , [ @norecompute = ] { 'norecompute' | 'NO' } ]  
    [ , [ @incremental = ] { 'incremental' | 'NO' } ]  

引数

[ @indexonly = ] 'indexonly' 既存のインデックス内にあり、インデックス定義の最初の列ではない列に対してのみ統計を作成します。 indexonlychar(9)です。 既定値は NO です。

[ @fullscan = ] 'fullscan'CREATE STATISTICS ステートメントを FULLSCAN オプションと共に使用します。 fullscanchar(9)です。 既定値は NO です。

[ @norecompute = ] 'norecompute'CREATE STATISTICS ステートメントを NORECOMPUTE オプションと共に使用します。 norecomputechar(12)です。 既定値は NO です。

[ @incremental = ] 'incremental'CREATE STATISTICS ステートメントを INCREMENTAL = ON オプションと共に使用します。 増分char(12)です。 既定値は NO です。

リターン コードの値

0 (成功) または 1 (失敗)

結果セット

新しい統計オブジェクトはそれぞれ、作成される列と同じ名前を持ちます。

解説

sp_createstatsでは、既存の統計オブジェクトの最初の列である列の統計は作成または更新されません。これには、インデックス用に作成された統計の最初の列、AUTO_CREATE_STATISTICS オプションで生成された単一列の統計を含む列、CREATE STATISTICS ステートメントで作成された統計の最初の列が含まれます。 sp_createstatsでは、その列が別の有効なインデックスで使用されていない限り、無効になっているインデックスの最初の列に統計は作成されません。 sp_createstatsでは、クラスター化インデックスが無効になっているテーブルに関する統計は作成されません。

テーブルに列セットが含まれている場合、sp_createstats ではスパース列に対する統計は作成されません。 列セットとスパース列の詳細については、「列セットの 使用 」および「 スパース列の使用」を参照してください。

アクセス許可

db_owner 固定データベース ロールのメンバーシップが必要です。

A. 条件を満たすすべての列の統計を 1 列ずつ作成する

次の例では、現在のデータベース内のすべての有効な列に対して単一列の統計を作成します。

EXEC sp_createstats;  
GO  

B. 条件を満たすすべてのインデックス列の統計を 1 列ずつ作成する

次の例では、インデックスに既に存在し、インデックスの最初の列ではない、すべての対象となる列に対して単一列の統計を作成します。

EXEC sp_createstats 'indexonly';  
GO  

参照

統計
CREATE STATISTICS (Transact-SQL)
ALTER DATABASE SET のオプション (Transact-SQL)
DBCC SHOW_STATISTICS (Transact-SQL)
DROP STATISTICS (Transact-SQL)
UPDATE STATISTICS (Transact-SQL)
データベース エンジン ストアド プロシージャ (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)