適用於:SQL Server
Azure SQL Database
Microsoft Fabric 中的 SQL 資料庫
UPDATE STATISTICS針對目前資料庫中的所有使用者定義和內部數據表執行。
如需 的詳細資訊 UPDATE STATISTICS,請參閱 UPDATE STATISTICS。 如需統計資料的詳細資訊,請參閱統計資料。
語法
sp_updatestats [ [ @resample = ] 'resample' ]
傳回碼值
0 (成功) 或 1 (失敗)。
引數
[ @resample = ] 「重取樣」
指定sp_updatestats使用UPDATE STATISTICSRESAMPLE。 如果未 resample 指定, sp_updatestats 請使用預設取樣來更新統計數據。 自 resample 變數為 varchar(8), 預設值為 NO。
備註
sp_updatestats 藉 UPDATE STATISTICS由指定 關鍵字,在資料庫中的所有使用者定義和內部資料表上執行 ALL 。
sp_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 Database、Azure SQL 受控實例和 SQL Server 2022 (16.x) 和更新版本中,自動建立的統計數據一律會像已設定 AUTO_DROP 一樣。
權限
針對 SQL Server,您必須是資料庫 (dbo) 的擁有者,或系統管理員固定伺服器角色的成員。
針對 Azure SQL 資料庫,您必須是db_owner固定資料庫角色的成員。
範例
下列範例會更新資料庫所有資料表的統計資料:
USE AdventureWorks2022;
GO
EXECUTE sp_updatestats;
自動索引與統計資料管理
利用自適性索引子磁碟重組等解決方案,為一或多個資料庫自動管理索引重組以及統計資料更新。 這項程序會根據索引分散程度與其他參數,自動選擇要進行重建或是重新組織索引,並以線性閾值更新統計資料。