sp_updatestats (Transact-SQL)

適用於:SQL ServerAzure SQL Database

UPDATE STATISTICS針對目前資料庫中的所有使用者定義和內部數據表執行。

如需 的詳細資訊 UPDATE STATISTICS,請參閱 UPDATE STATISTICS (Transact-SQL) 。 如需統計資料的詳細資訊,請參閱統計資料

Transact-SQL 語法慣例

Syntax

sp_updatestats [ [ @resample = ] 'resample' ]

傳回碼值

0 (成功) 或 1 (失敗)。

引數

[ @resample = ] 'resample'

指定sp_updatestats使用UPDATE STATISTICS 語句的選項RESAMPLE。 如果未 resample 指定, sp_updatestats 請使用預設取樣來更新統計數據。 自 resample 變數為 varchar(8), 預設值為 NO

備註

sp_updatestatsUPDATE STATISTICS由指定 關鍵字,在資料庫中的所有使用者定義和內部資料表上執行 ALLsp_updatestats 會顯示指出其進度的訊息。 更新完成時,它會報告所有數據表的統計數據都會更新。

sp_updatestats 會更新已停用非叢集索引的統計數據,而且不會更新已停用叢集索引的統計數據。

針對磁碟數據表,sp_updatestats會根據modification_countersys.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) 中引進的 統計數據自動卸除功能 設定適當的元數據有關。 自動卸除功能適用於 Azure SQL 資料庫、Azure SQL 受控執行個體,以及從 SQL Server 2022 (16.x) 開始。

權限

針對 SQL Server,您必須是資料庫 (dbo) 的擁有者,或系統管理員固定伺服器角色的成員

針對 Azure SQL 資料庫,您必須是db_owner固定資料庫角色的成員

範例

下列範例會更新資料庫所有資料表的統計資料:

USE AdventureWorks2022;
GO
EXEC sp_updatestats;

自動索引與統計資料管理

使用調適型索引重組解決方案,自動管理一或多個資料庫的索引重組和統計數據更新。 此程式會自動選擇是否要根據其片段層級重建或重新組織索引,以及其他參數,以及使用線性臨界值更新統計數據。