sp_createstats (Transact-SQL)
CREATE STATISTICS ステートメントを呼び出して、統計オブジェクトの最初の列になっていない列の統計を 1 列ずつ作成します。 統計を 1 列ずつ作成すると、ヒストグラムの数が増えて、基数の推定、クエリ プラン、およびクエリのパフォーマンスが向上します。 統計オブジェクトの最初の列にはヒストグラムがありますが、その他の列にはありません。
sp_createstats は、クエリの実行時間が重要であるためにクエリ オプティマイザーによって 1 列ずつの統計が生成されるのを待てないアプリケーション (ベンチマークなど) で使用できます。 ほとんどの場合、sp_createstats を使用する必要はありません。AUTO_CREATE_STATISTICS オプションがオンの場合は、クエリ プランを改善するためにクエリ オプティマイザーによって 1 列ずつの統計が必要に応じて生成されます。
統計の詳細については、「統計」を参照してください。 1 列ずつの統計の生成の詳細については、「ALTER DATABASE の SET オプション (Transact-SQL)」の AUTO_CREATE_STATISTICS オプションを参照してください。
適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで)、Windows Azure SQL データベース (初回のリリースから現在のバージョンまで) |
構文
sp_createstats
[ [ @indexonly = ] { 'indexonly' | 'NO' } ]
[ , [ @fullscan = ] { 'fullscan' | 'NO' } ]
[ , [ @norecompute = ] { 'norecompute' | 'NO' } ]
[ , [ @incremental = ] { 'incremental' | 'NO' } ]
引数
[ @indexonly= ] 'indexonly'
既存のインデックスに含まれている、インデックス定義の最初の列にはなっていない列についてのみ、統計を作成します。 indexonly のデータ型は char(9) です。 既定値は NO です。[ @fullscan= ] 'fullscan'
CREATE STATISTICS ステートメントで FULLSCAN オプションを使用します。 fullscan のデータ型は char(9) です。 既定値は NO です。[ @norecompute= ] 'norecompute'
CREATE STATISTICS ステートメントで NORECOMPUTE オプションを使用します。 norecompute のデータ型は char(12) です。 既定値は NO です。[ @incremental= ] 'incremental'
CREATE STATISTICS ステートメントで INCREMENTAL = ON オプションを使用します。 Incremental のデータ型は char(12) です。 既定値は NO です。適用対象: SQL Server (SQL Server 2014 から現在のバージョンまで)
リターン コード値
0 (成功) または 1 (失敗)
結果セット
新しい統計オブジェクトの名前は、その統計オブジェクトが作成された列の名前と同じです。
説明
sp_createstats では、既存の統計オブジェクトの最初の列になっている列の統計は、作成も更新もされません。これには、インデックスに対して作成された統計の最初の列、AUTO_CREATE_STATISTICS オプションを使用して 1 列ずつの統計が生成されている列、および CREATE STATISTICS ステートメントを使用して作成された統計の最初の列が含まれます。 また、sp_createstats では、無効化されたインデックスの最初の列の統計も、その列が別の有効化されたインデックスで使用されていない限り、作成されません。 sp_createstats では、無効化されたクラスター化インデックスを持つテーブルの統計も作成されません。
テーブルに列セットが含まれている場合、sp_createstats ではスパース列に対する統計は作成されません。 列セットとスパース列の詳細については、「列セットの使用」および「スパース列の使用」を参照してください。
権限
db_owner 固定データベース ロールのメンバーシップが必要です。
使用例
A. 条件を満たすすべての列の統計を 1 列ずつ作成する
次の例では、現在のデータベースで、条件を満たすすべての列の統計を 1 列ずつ作成します。
EXEC sp_createstats;
GO
B. 条件を満たすすべてのインデックス列の統計を 1 列ずつ作成する
次の例では、既にインデックスに含まれていてインデックスの最初の列にはなっていない、条件を満たすすべての列の統計を 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)