共用方式為


sp_updatestats (Transact-SQL)

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

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

適用於:SQL Server (SQL Server 2008 透過目前版本)、Windows Azure 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

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

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

權限

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

範例

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

USE AdventureWorks2012;
GO
EXEC sp_updatestats; 

請參閱

參考

ALTER DATABASE SET 選項 (Transact-SQL)

CREATE STATISTICS (Transact-SQL)

DBCC SHOW_STATISTICS (Transact-SQL)

DROP STATISTICS (Transact-SQL)

sp_autostats (Transact-SQL)

sp_createstats (Transact-SQL)

UPDATE STATISTICS (Transact-SQL)

系統預存程序