更新統計資料
適用於:SQL Server Azure SQL 資料庫 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
若要更新統計資料物件
在 [物件總管] 中,按一下加號展開要在其中更新統計資料的資料庫。
選取加號展開 [資料表] 資料夾。
按一下加號展開要在其中更新統計資料的資料表。
按一下加號展開 [統計資料] 資料夾。
以滑鼠右鍵按一下要更新的統計資料物件,然後選取 [屬性]。
在 [統計資料屬性 -統計資料名稱] 對話方塊中,選取 [更新這些資料行的統計資料] 核取方塊,然後按一下 [確定]。
使用 Transact-SQL
更新特定的統計資料物件
在物件總管中,連線到資料庫引擎的執行個體。
在標準列上,選取 [新增查詢] 。
複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。
USE AdventureWorks2022; 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 AdventureWorks2022; GO -- The following example updates the statistics for all indexes on the SalesOrderDetail table. UPDATE STATISTICS Sales.SalesOrderDetail; GO
如需詳細資訊,請參閱更新統計資料。
更新資料庫中的所有統計資料
在物件總管中,連線到資料庫引擎的執行個體。
在標準列上,選取 [新增查詢] 。
複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。
USE AdventureWorks2022; GO -- The following example updates the statistics for all tables in the database. EXEC sp_updatestats;
自動索引與統計資料管理
利用自適性索引子磁碟重組等解決方案,為一或多個資料庫自動管理索引重組以及統計資料更新。 這項程序會根據索引分散程度與其他參數,自動選擇要進行重建或是重新組織索引,並以線性閾值更新統計資料。