統計の更新

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

SQL Server Management Studio または Transact-SQL を使用して、SQL Server のテーブルまたはインデックス付きビューで、クエリ最適化に関する統計を更新できます。 既定では、クエリ プランを改善するためにクエリ オプティマイザーによって必要に応じて更新されますが、UPDATE STATISTICS またはストアド プロシージャ sp_updatestats を使用して既定の更新より頻繁に統計を更新することでクエリのパフォーマンスを向上できる場合もあります。

統計を更新すると、クエリが最新の統計を使用してコンパイルされるようになります。 ただし、統計の更新によりクエリが再コンパイルされます。 パフォーマンスの向上を目的とする場合、クエリ プランの改善とクエリの再コンパイルに要する時間の間にはトレードオフの関係があるため、あまり頻繁に統計を更新しないようにすることをお勧めします。 実際のトレードオフはアプリケーションによって異なります。 UPDATE STATISTICS では、tempdb を使用して、統計を作成するための行のサンプルを並べ替えます。

アクセス許可

UPDATE STATISTICS を使用するか、または SQL Server Management Studio で変更する場合は、テーブルまたはビューに対する ALTER 権限が必要です sp_updatestatsを使用する場合は、 sysadmin 固定サーバー ロールのメンバーシップまたはデータベース (dbo) の所有権が必要です。

SQL Server Management Studio を使用する

統計オブジェクトの更新

  1. オブジェクト エクスプローラー で、統計を更新するデータベースをプラス記号を選択して展開します。

  2. プラス記号を選択して [テーブル] フォルダーを展開します。

  3. プラス記号を選択して、統計を更新するテーブルを展開します。

  4. プラス記号を選択して [統計] フォルダーを展開します。

  5. 更新する統計オブジェクトを右クリックし、 [プロパティ]を選択します。

  6. [統計のプロパティ - statistics_name] ダイアログ ボックスで [これらの列の統計を更新する] チェック ボックスをオンにし、[OK] を選択します。

Transact-SQL の使用

特定の統計オブジェクトの更新

  1. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  2. 標準バーで、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。

    USE AdventureWorks2022;
    GO
    -- The following example updates the statistics for the AK_SalesOrderDetail_rowguid index of the SalesOrderDetail table.
    UPDATE STATISTICS Sales.SalesOrderDetail AK_SalesOrderDetail_rowguid;
    GO
    

テーブルのすべての統計の更新

  1. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  2. 標準バーで、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。

    USE AdventureWorks2022;
    GO
    -- The following example updates the statistics for all indexes on the SalesOrderDetail table.
    UPDATE STATISTICS Sales.SalesOrderDetail;
    GO
    

詳細については、「統計の更新」を参照してください。

データベースのすべての統計の更新

  1. オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。

  2. 標準バーで、 [新しいクエリ] を選択します。

  3. 次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] を選択します。

    USE AdventureWorks2022;
    GO
    -- The following example updates the statistics for all tables in the database.
    EXEC sp_updatestats;
    

インデックスと統計の自動管理

Adaptive Index Defrag のようなソリューションを活用し、1 個以上のデータベースに対するインデックスの最適化と統計更新を自動管理します。 このプロシージャでは、断片化レベルやその他のパラメーターに基づいてインデックスを再構築または再構成するか、線形しきい値で統計を更新するかが自動的に選択されます。