共用方式為


將查詢提示附加至計劃指南

任何有效的查詢提示組合都可以在計劃指南中使用。 當計劃指南符合查詢時,計劃指南的 hints 子句中指定的 OPTION 子句會在編譯和優化之前新增至查詢。 如果符合計劃指南的查詢已經有OPTION子句,則計劃指南中指定的查詢提示會取代查詢中的查詢提示。 不過,若要讓計劃指南比對已經有OPTION子句的查詢,當您指定查詢文字以符合 sp_create_plan_guide語句時,必須包含查詢的OPTION子句。 如果您想要將計劃指南中指定的提示新增至已存在於查詢上的提示,而不是取代它們,您必須在計劃指南的 OPTION 子句中指定原始提示和其他提示。

謹慎

誤用查詢提示的計劃指南可能會導致編譯、執行或效能問題。 計劃指南只能由有經驗的開發人員和資料庫管理員使用。

計劃指南中使用的常見查詢提示

受益於計劃指南的查詢通常是以參數為基礎,而且執行效能不佳,因為它們使用快取的查詢計劃,其參數值不代表最壞的情況或最具代表性的案例。 OPTIMIZE FOR 和 RECOMPILE 查詢提示可用來解決此問題。 OPTIMIZE FOR 會指示 SQL Server 在優化查詢時,使用參數的特定值。 RECOMPILE 會指示伺服器在執行之後捨棄查詢計劃,強制查詢優化器在下一次執行相同的查詢時重新編譯新的查詢計劃。 如需範例,請參閱 計劃指南

此外,您可以將資料表提示 INDEX、FORCESCAN 和 FORCESEEK 指定為查詢提示。 當指定為查詢提示時,這些提示的行為就像內嵌數據表或檢視提示。 INDEX 提示會強制查詢優化器只使用指定的索引來存取參考數據表或檢視中的數據。 FORCESEEK 提示會強制優化器只使用索引搜尋作業來存取參考數據表或檢視中的數據。 這些提示提供額外的計劃指南功能,並可讓您對使用計劃指南的查詢優化產生更多影響。