統計を作成する
適用対象: SQL Server 2022 (16.x) Azure SQL データベース Azure SQL Managed Instance
SQL Server Management Studio または Transact-SQL を使用して、SQL Server のテーブルまたはインデックス付きビューの 1 つまたは複数の列に関するクエリ最適化統計値を作成できます。 ほとんどのクエリでは、高品質のクエリ プランに必要な統計がクエリ オプティマイザーによって既に生成されていますが、最適な結果を得るために追加の統計情報を作成する必要がある場合もあります。
制限事項と制約事項
CREATE STATISTICS ステートメントで統計を作成する前に、AUTO_CREATE_STATISTICS オプションがデータベース レベルで設定されていることを確認します。 これにより、クエリ オプティマイザーが常にクエリ述語列について 1 列ずつの統計を作成し続けるようになります。
統計オブジェクトごとに最大 32 列の一覧を取得できます。
フィルター選択された統計情報の述語で定義されているテーブル列の定義を削除、名前変更、または変更することはできません。
アクセス許可
ユーザーがテーブルまたはインデックス付きビューの所有者であるか、 sysadmin 固定サーバー ロール、 db_owner 固定データベース ロール、または db_ddladmin 固定データベース ロールのメンバーである必要があります。
SQL Server Management Studio を使用します。
オブジェクト エクスプローラーで、プラス記号を選択して、新しい統計を作成するデータベースを展開します。
プラス記号を選択して [テーブル] フォルダーを展開します。
プラス記号を選択して、新しい統計を作成するテーブルを展開します。
[統計] フォルダーを右クリックし、[新しい統計] を選択します。
[全般] ページの [テーブルの新しい統計 - <テーブル名>] ダイアログ ボックスに次のプロパティが表示されます。
プロパティ 説明 テーブル名 統計の対象となるテーブルの名前が表示されます。 [統計名] 統計情報が格納されるデータベース オブジェクトの名前が表示されます。 [統計の列] このグリッドに、この統計の対象となる列が表示されます。 グリッド内のすべての値は読み取り専用です。 名前 統計の対象となる列の名前が表示されます。 表示されるのは、1 つのテーブルの 1 つの列、または列の組み合わせです。 データの種類 統計の対象となる列のデータ型を表します。 [サイズ] 各列のデータ型のサイズが表示されます。 ID オンの場合、ID 列を示します。 [NULL を許容] 列で NULL 値が許容されるかどうかを示します。 追加 テーブルの列を統計グリッドに追加します。 削除 選択されている列を統計グリッドから削除します。 [上へ移動] 統計グリッド内で選択されている列を上に移動します。 グリッド内の列の位置は、統計の実用性に大きく影響します。 [下へ移動] 統計グリッド内で選択されている列を下に移動します。 [これらの列に対する統計の最終更新日時] 統計がどれだけ古いかを示します。 統計は、新しいほど価値があります。 データに大きな変更が加えられた後や、通常とは異なるデータを追加した後は、統計を更新してください。 データの変更が平均しているテーブルの場合は、統計を頻繁に更新する必要はありません。 [この列の統計を更新する] オンにすると、ダイアログ ボックスを閉じたときに統計を更新します。 [フィルター] ページの [テーブルの新しい統計 - <テーブル名>] ダイアログ ボックスに次のプロパティが表示されます。
プロパティ 説明 [フィルター式] フィルター処理された統計情報にどのデータ行を含めるかを定義します。 たとえば、 Production.ProductSubcategoryID IN ( 1, 2, 3 )
のように指定します。[テーブルの新しい統計 - <テーブル名>] ダイアログ ボックスの [全般] ページで [追加] を選択します。
[列の選択] ダイアログ ボックスに次のプロパティが表示されます。 この情報は読み取り専用です。
プロパティ 内容 名前 統計の対象となる列の名前が表示されます。 表示されるのは、1 つのテーブルの 1 つの列、または列の組み合わせです。 データの種類 統計の対象となる列のデータ型を表します。 [サイズ] 各列のデータ型のサイズが表示されます。 ID オンの場合、ID 列を示します。 [NULL を許容] 列で NULL 値が許容されるかどうかを示します。 [列の選択] ダイアログ ボックスで、統計を作成する各列のチェック ボックスをオンにし、[OK] を選択します。
[テーブルの新しい統計 - <テーブル名>] ダイアログ ボックスで、[OK] を選択します。
Transact-SQL の使用
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
標準バーで、 [新しいクエリ] を選択します。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。
USE AdventureWorks2022; GO -- Create new statistic object called ContactMail1 -- on the BusinessEntityID and EmailPromotion columns in the Person.Person table. CREATE STATISTICS ContactMail1 ON Person.Person (BusinessEntityID, EmailPromotion); GO
上記で作成された統計により、次のクエリの結果が潜在的に向上します。
USE AdventureWorks2022; GO SELECT LastName, FirstName FROM Person.Person WHERE EmailPromotion = 2 ORDER BY LastName, FirstName; GO