了解強制執行計劃
更新: 2007 年 9 月 15 日
SQL Server 2005 導入了 USE PLAN 查詢提示。USE PLAN 可用來強制查詢最佳化工具將指定的查詢計劃用於查詢。USE PLAN 查詢提示運作的方式是,接受您要使用的查詢計劃 (XML 格式) 當做引數。您可以在查詢計劃會造成執行時間緩慢的查詢中使用 USE PLAN,但前提是您知道有更好的計劃。常見的狀況可能是在 SQL Server 舊版中執行很順利的查詢,在升級版本中 (無論是以 Service Pack 升級或完整版的升級) 執行卻效率不佳。在大部分的情況下,升級版本在大多數查詢的執行時間上,可提供一樣的效能或更好的效能,但偶而也有例外。若舊版產品中查詢最佳化工具所選取的查詢計劃比升級後所選取的查詢計劃更為優先使用時,則可使用 USE PLAN 查詢提示來處理這種狀況。
當您在疑難排解部署的應用程式中查詢效能不彰的問題時,可將 USE PLAN 查詢提示與計劃指南搭配使用。當您不能或不想直接變更應用程式,可使用計劃指南將查詢提示套用到查詢。如需計劃指南的詳細資訊,請參閱<使用計劃指南對已部署應用程式中的查詢進行最佳化>。如需說明如何在計劃指南中套用USE PLAN 查詢提示的詳細案例,請參閱<計劃強制實例:建立使用 USE PLAN 查詢提示的計劃指南>和<計劃強制實例:建立計劃指南以強制從重寫查詢取得計劃>。
大部分的 SELECT 查詢類型都可以使用強制執行計劃。這些查詢包含針對資料表、叢集和非叢集索引、索引檢視,以及資料分割資料表和索引的查詢。INSERT、UPDATE 或 DELETE 陳述式就不能指定 USE PLAN。
隨 USE PLAN 查詢提示產生的查詢計畫會像其他快取計畫一樣受到快取。
強制執行計劃的限制
強制執行計劃會將查詢限制為單一的靜態執行計劃。強制執行計劃會讓查詢最佳化工具無法適應資料大小和散發、新索引,以及其他變數的變更。因此,(若誤用) 強制執行計劃會導致效能出現問題。強制執行計劃應該只在完全嘗試過其他增進查詢效能的選項後才使用,例如使用最新最精確的統計資料和最佳化的索引。強制執行計劃應盡量少用,只有經驗豐富的資料庫管理員和開發人員才可使用,因為他們對效能問題及他們的資料庫與應用程式環境的變更非常熟悉。
當您使用 USE PLAN 查詢提示來影響部署的應用程式中查詢的編譯時,應該將此提示用於計劃指南中,而非直接內嵌於應用程式中。這樣做可以讓您解決下列困境:
- 您可以變更或移除提示,而不需要修改或重新編譯應用程式。在某些情況中,適用於某個 SQL Server 版本的 USE PLAN 提示,不一定適用於以後的 Service Pack 或版本。因此,您可能需要在應用程式部署完成後,變更或移除 USE PLAN 提示。
- 可避免在查詢中直接使用大型查詢。這樣讓查詢易於讀取。
重要事項: 在建立使用 USE PLAN 的計劃指南時,您應該在測試期間確認要強制執行計劃的查詢,是否通常由資料指標要求所提交。資料指標型查詢的查詢計劃與非資料指標查詢的查詢計劃不同。因此,若要建立指定 USE PLAN 提示的計劃指南,而此提示會套用到以資料指標要求所提交的查詢,則此計劃指南必須指定資料指標計劃。如需詳細資訊,請參閱<在含有資料指標的查詢上使用 USE PLAN 查詢提示>。
下列 SQL Server 2005 的查詢類型不支援強制執行計劃:
- 具有動態、索引鍵集衍生和順向資料指標的查詢。靜態和快速順向資料指標則受支援。如需詳細資訊,請參閱<在含有資料指標的查詢上使用 USE PLAN 查詢提示>。
- 分散式查詢。
- 全文檢索查詢。
- 插入、刪除和更新陳述式。
請參閱
概念
其他資源
說明及資訊
變更歷程記錄
版本 | 歷程記錄 |
---|---|
2007 年 9 月 15 日 |
|