sp_createstats (Transact-SQL)
適用対象: SQL Server Azure SQL Database Azure SQL Managed Instance
CREATE STATISTICS ステートメントを呼び出して、統計オブジェクトの最初の列ではない列に対して単一列の統計を作成します。 統計を 1 列ずつ作成すると、ヒストグラムの数が増えて、カーディナリティの推定、クエリ プラン、およびクエリのパフォーマンスが向上します。 統計オブジェクトの最初の列にはヒストグラムがあります。他の列にはヒストグラムがありません。
sp_createstats
は、クエリの実行時間が重要であり、クエリ オプティマイザーが単一列の統計を生成するのを待てない場合のベンチマークなどのアプリケーションに役立ちます。 ほとんどの場合、 sp_createstats
を使用する必要はありません。クエリ オプティマイザーは、 AUTO_CREATE_STATISTICS
オプションがオンのときにクエリ プランを改善するために、必要に応じて単一列の統計を生成します。
統計の詳細については、「統計」を参照してください。 単一列統計の生成の詳細については、AUTO_CREATE_STATISTICS
オプション
構文
sp_createstats
[ [ @indexonly = ] 'indexonly' ]
[ , [ @fullscan = ] 'fullscan' ]
[ , [ @norecompute = ] 'norecompute' ]
[ , [ @incremental = ] 'incremental' ]
[ ; ]
引数
[ @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
です。
リターン コードの値
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