更新統計資料

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsAnalytics Platform System (PDW)

您可以使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 中針對資料表或索引檢視表更新查詢最佳化統計資料。 根據預設,查詢優化器已視需要更新統計數據,以改善查詢計劃;在某些情況下,您可以使用 或 預存程式sp_updatestats比預設更新更頻繁地更新統計數據,以改善查詢效能UPDATE STATISTICS

更新統計資料可確保查詢使用最新的統計資料進行編譯。 不過,更新統計資料會導致查詢重新編譯。 建議您不要太頻繁地更新統計數據,因為改善查詢計劃與重新編譯查詢所需的時間之間會有效能取捨。 特定的權衡取捨完全取決於您的應用程式。 UPDATE STATISTICS 可以使用 tempdb 來排序資料列的範例,以建立統計資料。

權限

如果透過 SQL Server Management Studio 使用 UPDATE STATISTICS 或進行變更,則需要數據表或檢視表的 ALTER 許可權。 如果使用 sp_updatestats,需要 系統管理員 固定伺服器角色的成員資格或資料庫 (dbo) 的擁有權。

使用 SQL Server Management Studio

更新統計數據物件

  1. 物件總管 中,選取加號展開您要更新統計數據的資料庫。

  2. 選取加號展開 [資料表] 資料夾。

  3. 選取加號展開您要更新統計數據的數據表。

  4. 選取加號展開 [ 統計數據 ] 資料夾。

  5. 以滑鼠右鍵按一下要更新的統計資料物件,然後選取 [屬性]。

  6. 在 [ 統計數據屬性 - statistics_name] 對話框中,選取 [更新這些數據行 的統計數據] 複選框,然後選取 [ 確定]。

使用 Transact-SQL

更新特定統計數據物件

  1. 在物件總管中,連線到資料庫引擎的執行個體。

  2. 在標準列上,選取 [新增查詢] 。

  3. 複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。

    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
    

更新數據表中的所有統計數據

  1. 在物件總管中,連線到資料庫引擎的執行個體。

  2. 在標準列上,選取 [新增查詢] 。

  3. 複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。

    USE AdventureWorks2022;
    GO
    -- The following example updates the statistics for all indexes on the SalesOrderDetail table.
    UPDATE STATISTICS Sales.SalesOrderDetail;
    GO
    

如需詳細資訊,請參閱 UPDATE STATISTICS

更新資料庫中的所有統計數據

  1. 在物件總管中,連線到資料庫引擎的執行個體。

  2. 在標準列上,選取 [新增查詢] 。

  3. 複製下列範例並將其貼到查詢視窗中,然後選取 [執行]。

    USE AdventureWorks2022;
    GO
    -- The following example updates the statistics for all tables in the database.
    EXEC sp_updatestats;
    

自動索引與統計資料管理

使用調適型索引重組解決方案,自動管理一或多個資料庫的索引重組和統計數據更新。 此程式會自動選擇是否要根據其片段層級重建或重新組織索引,以及其他參數,以及使用線性臨界值更新統計數據。