Share via


sp_updatestats (Transact-SQL)

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

如需有關 UPDATE STATISTICS 的詳細資訊,請參閱<UPDATE STATISTICS (Transact-SQL)>。如需有關統計資料的詳細資訊,請參閱<使用統計資料來改善查詢效能>。

主題連結圖示Transact-SQL 語法慣例

語法

        sp_updatestats [ [ @resample = ] 'resample']

傳回碼值

0 (成功) 或 1 (失敗)

引數

  • [ @resample =] 'resample'
    指定 sp_updatestats 將使用 UPDATE STATISTICS 陳述式的 RESAMPLE 選項。如果沒有指定 'resample'sp_updatestats 就會使用預設取樣來更新統計資料。resample 是 varchar(8),預設值為 NO。

備註

透過指定 ALL 關鍵字,sp_updatestats 會針對資料庫中的所有使用者定義和內部資料表執行 UPDATE STATISTICS。sp_updatestats 會顯示進度訊息。當更新完成時,它會報告已更新所有資料表的統計資料。

sp_updatestats 會針對停用的非叢集索引更新統計資料,但不會針對停用的叢集索引更新統計資料。

sp_updatestats 只會根據 sys.sysindexes 目錄檢視中的 rowmodctr 資訊來更新需要更新的統計資料,因而避免不必要更新未變更資料列的統計資料。

sp_updatestats 可以觸發預存程序或其他已編譯程式碼的重新編譯。不過,如果參考的資料表以及資料表的索引只能具有一個查詢計畫,sp_updatestats 可能不會導致重新編譯。在這些情況下,重新編譯是不必要的,即使已更新統計資料也一樣。

對於相容性層級低於 90 的資料庫而言,執行 sp_updatestats 不會保留特定統計資料的最新 NORECOMPUTE 設定。對於相容性層級為 90 或以上的資料庫而言,sp_updatestats 就會保留特定統計資料的最新 NORECOMPUTE 選項。如需有關停用並重新啟用統計資料更新的詳細資訊,請參閱<使用統計資料來改善查詢效能>。

權限

需要系統管理員 (sysadmin) 固定伺服器角色中的成員資格或資料庫 (dbo) 的擁有權。

範例

下列範例會更新 AdventureWorks2008R2 資料庫中之資料表的統計資料。

USE AdventureWorks2008R2;
GO
EXEC sp_updatestats