sp_updatestats (Transact-SQL)
UPDATE STATISTICS
針對目前資料庫中的所有使用者定義和內部數據表執行。
如需 的詳細資訊 UPDATE STATISTICS
,請參閱 UPDATE STATISTICS。 如需統計資料的詳細資訊,請參閱統計資料。
Syntax
sp_updatestats [ [ @resample = ] 'resample' ]
傳回碼值
0
(成功) 或 1
(失敗)。
引數
[ @resample = ] 'resample'
指定sp_updatestats
使用UPDATE STATISTICS 語句的選項RESAMPLE
。 如果未 resample
指定, sp_updatestats
請使用預設取樣來更新統計數據。 自 resample
變數為 varchar(8), 預設值為 NO
。
備註
sp_updatestats
藉 UPDATE STATISTICS
由指定 關鍵字,在資料庫中的所有使用者定義和內部資料表上執行 ALL
。 sp_updatestats
會顯示指出其進度的訊息。 更新完成時,它會報告所有數據表的統計數據都會更新。
sp_updatestats
會更新已停用非叢集索引的統計數據,而且不會更新已停用叢集索引的統計數據。
針對磁碟數據表,sp_updatestats
會根據modification_counter
sys.dm_db_stats_properties目錄檢視中的資訊更新統計數據,更新至少修改一個數據列的統計數據。 執行 sp_updatestats
時,記憶體優化數據表的統計數據一律會更新。 因此,請勿執行 sp_updatestats
超過必要。
sp_updatestats
可以觸發預存程式或其他已編譯程式代碼的重新編譯。 不過, sp_updatestats
如果只有一個查詢計劃可供參考的數據表和索引,則可能不會造成重新編譯。 即使統計數據已更新,在這些情況下,重新編譯也不必要。
sp_updatestats
會保留特定統計數據的最新 NORECOMPUTE
選項。 如需停用及重新啟用統計資料更新的詳細資訊,請參閱統計資料。
從舊版還原資料庫至 SQL Server 2022 (16.x) 時,您應該在資料庫上執行 sp_updatestats
。 這與為 SQL Server 2022 (16.x) 中引進的 統計數據自動卸除功能 設定適當的元數據有關。 從 SQL Server 2022 (16.x) 開始,Azure SQL 資料庫、Azure SQL 受控執行個體 提供自動卸載功能。
權限
針對 SQL Server,您必須是資料庫 (dbo) 的擁有者,或系統管理員固定伺服器角色的成員。
針對 Azure SQL 資料庫,您必須是db_owner固定資料庫角色的成員。
範例
下列範例會更新資料庫所有資料表的統計資料:
USE AdventureWorks2022;
GO
EXEC sp_updatestats;
自動索引與統計資料管理
利用自適性索引子磁碟重組等解決方案,為一或多個資料庫自動管理索引重組以及統計資料更新。 這項程序會根據索引分散程度與其他參數,自動選擇要進行重建或是重新組織索引,並以線性閾值更新統計資料。