適用対象:SQL Server
Azure SQL データベース
現在のデータベースのすべてのユーザー定義テーブルと内部テーブルに対して UPDATE STATISTICS
を実行します。
UPDATE STATISTICS
の詳細については、「UPDATE STATISTICS」を参照してください。 統計の詳細については、「統計」を参照してください。
構文
sp_updatestats [ [ @resample = ] 'resample' ]
リターン コードの値
0
(成功) または 1
(失敗)。
引数
[ @resample = ] 'resample'
sp_updatestats
が RESAMPLE
ステートメントの オプションを使用することを指定します。
resample
が指定されていない場合、sp_updatestats
は既定のサンプリングを使用して統計を更新します。
resample
引数はvarchar(8)で、既定値は NO
です。
解説
sp_updatestats
は、データベース内のすべてのユーザー定義テーブルと内部テーブルに対して UPDATE STATISTICS
キーワードを指定して、ALL
を実行します。
sp_updatestats
は、進行状況を示すメッセージを表示します。 更新が完了すると、すべてのテーブルの統計が更新されたことを報告します。
sp_updatestats
は、無効な非クラスター化インデックスの統計を更新し、無効なクラスター化インデックスの統計を更新しません。
ディスク ベースのテーブルの場合、sp_updatestats
modification_counter
カタログ ビューの情報に基づいて統計を更新し、少なくとも 1 つの行が変更された統計を更新します。 メモリ最適化テーブルの統計は、 sp_updatestats
の実行時に常に更新されます。 そのため、必要以上に sp_updatestats
実行しないでください。
sp_updatestats
では、ストアド プロシージャまたはその他のコンパイル済みコードの再コンパイルをトリガーできます。 ただし、参照されているテーブルとそのインデックスに対して 1 つのクエリ プランしか使用できない場合は、 sp_updatestats
が再コンパイルされない可能性があります。 このような場合は、統計が更新されても再コンパイルの必要はありません。
sp_updatestats
は、特定の統計の最新の NORECOMPUTE
オプションを保持します。 統計の更新の無効化および再有効化について詳しくは、「統計」をご覧ください。
以前のバージョンから SQL Server 2022 (16.x) にデータベースを復元する場合は、データベースに対して sp_updatestats
を実行する必要があります。 これは、SQL Server 2022 (16.x) で導入された統計自動ドロップ機能の適切なメタデータの設定に関連しています。 Azure SQL Database、Azure SQL Managed Instance、および SQL Server 2022 (16.x) 以降のバージョンでは、自動的に作成された統計は、 AUTO_DROP が設定されているかのように常に動作します。
アクセス許可
SQL Server の場合は、データベースの所有者 (dbo) であるか、固定サーバー ロールsysadmin のメンバーである必要があります。
Azure SQL Database の場合は、 db_owner 固定データベース ロールのメンバーである必要があります。
例
次の例では、データベースのすべてのテーブルの統計を更新します。
USE AdventureWorks2022;
GO
EXECUTE sp_updatestats;
インデックスと統計の自動管理
Adaptive Index Defrag のようなソリューションを活用し、1 個以上のデータベースに対するインデックスの最適化と統計更新を自動管理します。 このプロシージャでは、断片化レベルやその他のパラメーターに基づいてインデックスを再構築または再構成するか、線形しきい値で統計を更新するかが自動的に選択されます。