程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 詳解SQL Server 2008遷移查詢計劃

詳解SQL Server 2008遷移查詢計劃

編輯:關於SqlServer

大多數情況下,將數據庫升級到 SQL Server 2008 會提高查詢性能。 但是,如果您具有已針對性能進行過認真優化的任務關鍵查詢,在升級前最好為每個查詢創建一個計劃指南,以保留這些查詢的查詢計劃。 如果在升級後,查詢優化器為一個或多個查詢選擇了效率較低的計劃,則可以啟用這些計劃指南並強制查詢優化器使用升級前的計劃。

若要在升級前創建計劃指南,請按照以下步驟執行操作:

通過使用 sp_create_plan_guide 存儲過程並在 USE PLAN 查詢提示中指定查詢計劃來記錄每個任務關鍵查詢的當前計劃。

驗證計劃指南是否適用於此查詢

將數據庫升級到 SQL Server 2008。

計劃保留在升級後的數據庫中的計劃指南中,如果在升級後計劃的性能出現退步,則這些計劃將用作後備計劃。

建議您在升級後不要啟用計劃指南,因為由於統計信息進行了更新,您可能會錯過新版本中的更好計劃或者重新編譯所帶來的益處。

如果在升級後選擇了效率較低的計劃,可以激活所有計劃指南或部分計劃指南以取代新計劃。

示例

下面的示例顯示如何通過創建計劃指南來為查詢記錄升級前的計劃。

步驟 1:收集計劃

計劃指南中記錄的查詢計劃必須采用 XML 格式。 可通過以下方式生成 XML 格式的查詢計劃:

SET SHOWPLAN_XML 
SET STATISTICS XML

查詢 sys.dm_exec_query_plan 動態管理函數的 query_plan 列。

SQL Server Profiler Showplan XML、Showplan XML Statistics Profile 和 Showplan XML For Query Compile 事件類。

下面的示例通過查詢動態管理視圖收集語句

SELECT City, StateProvinceID, PostalCode FROM Person.Address ORDER BY PostalCode DESC;

的查詢計劃。

USE AdventureWorks;
GO
SELECT query_plan
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY sys.dm_exec_text_query_plan(qs.plan_handle, DEFAULT, DEFAULT) AS qp
WHERE st.text LIKE N'SELECT City, StateProvinceID,

PostalCode FROM Person.Address ORDER BY PostalCode DESC;%';

GO

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved