更新統計資料
適用于:
SQL Server (所有支援的版本)
Azure SQL Database
Azure SQL 受控執行個體 Azure Synapse
Analytics Analytics
Platform System (PDW)
您可以使用 SQL Server Management Studio 或 Transact-SQL,在SQL Server中更新資料表或索引檢視表的查詢優化統計資料。 根據預設,查詢最佳化工具已經視需要更新統計資料,以便改善查詢計畫。不過,在某些情況下,您可以使用 UPDATE STATISTICS 或 sp_updatestats 預存程序,讓統計資料的更新頻率高於預設更新頻率,藉以改善查詢效能。
更新統計資料可確保查詢使用最新的統計資料進行編譯。 不過,更新統計資料會導致查詢重新編譯。 我們建議您不要太頻繁地更新統計資料,因為改善查詢計劃與重新編譯查詢所花費的時間之間具有效能權衡取捨。 特定的權衡取捨完全取決於您的應用程式。 UPDATE STATISTICS 可以使用 tempdb 來排序資料列的範例,以便建立統計資料。
本主題內容
開始之前:
若要使用下列項目更新統計資料物件:
開始之前
安全性
權限
如果使用 UPDATE STATISTICS 或透過SQL Server Management Studio進行變更,則需要資料表或檢視表的 ALTER 許可權。 如果使用 sp_updatestats,需要 系統管理員 固定伺服器角色的成員資格或資料庫 (dbo) 的擁有權。
使用 SQL Server Management Studio
若要更新統計資料物件
在 [物件總管] 中,按一下加號展開要在其中更新統計資料的資料庫。
按一下加號展開 [資料表] 資料夾。
按一下加號展開要在其中更新統計資料的資料表。
按一下加號展開 [統計資料] 資料夾。
以滑鼠右鍵按一下要更新的統計資料物件,然後選取 [屬性]。
在 [統計資料屬性 -statistics_name] 對話方塊中,選取[更新這些資料行的統計資料] 核取方塊,然後按一下 [確定]。
使用 TRANSACT-SQL
若要更新特定的統計資料物件
在物件總管中,連線到資料庫引擎的執行個體。
在標準列上,按一下 [新增查詢] 。
複製下列範例並將其貼到查詢視窗中,然後按一下 [執行] 。
USE AdventureWorks2012; GO -- The following example updates the statistics for the AK_SalesOrderDetail_rowguid index of the SalesOrderDetail table. UPDATE STATISTICS Sales.SalesOrderDetail AK_SalesOrderDetail_rowguid; GO
若要更新資料表中的所有統計資料
在物件總管中,連線到資料庫引擎的執行個體。
在標準列上,按一下 [新增查詢] 。
複製下列範例並將其貼到查詢視窗中,然後按一下 [執行] 。
USE AdventureWorks2012; GO -- The following example updates the statistics for all indexes on the SalesOrderDetail table. UPDATE STATISTICS Sales.SalesOrderDetail; GO
如需詳細資訊,請參閱UPDATE STATISTICS (Transact-SQL) 。
若要更新資料庫中的所有統計資料
在物件總管中,連線到資料庫引擎的執行個體。
在標準列上,按一下 [新增查詢] 。
複製下列範例並將其貼到查詢視窗中,然後按一下 [執行] 。
USE AdventureWorks2012; GO -- The following example updates the statistics for all tables in the database. EXEC sp_updatestats;
自動索引與統計資料管理
利用自適性索引重組等解決方案,為一或多個資料庫自動管理索引重組以及統計資料更新。 這項程序會根據索引分散程度與其他參數,自動選擇要進行重建或是重新組織索引,並以線性閾值更新統計資料。
後續步驟
如需詳細資訊,請參閱UPDATE STATISTICS (Transact-SQL) 。