[SQL SERVER]善用USE PLAN 提示

[SQL SERVER]善用USE PLAN 提示

強制查詢最佳化程式套用所指定的執行計畫(xml格式)。

該提示大部分可以強制聯結順序、排序和索引(掃描或搜尋)運算子,

比較可惜的是無法支援分散式查詢。

當你發現有執行計畫優於現在查詢最佳化程式版本所產生執行計畫(例如不同系統環境或是前一版SQL Server執行計畫較好),

而且你又不想改寫原本TSQL查詢語法時,

這時產生較好執行計畫(xml格式),

並套用較佳品質執行計畫可能會是最快的改善方法。

 

select t2.OrderQty,t2.ProductID,t1.TaxAmt

from SalesOrderHeader t1 JOIN SalesOrderDetail t2

on t1.SalesOrderID=t2.SalesOrderID

 

image

查詢最佳化程式預設選擇hash join,但在不同系統環境中你想使用loop join來取代hash join,

這時我們可以先產生loop join xml格式的執行計畫,並利用該提示來套用,如下

 

--建立loo join xml格式執行計畫

set showplan_xml on

image

 

 

--套用該執行計畫

image

 

但使用該提示要注意,當套用無效的執行計畫將會導致查詢失敗,

如要避免這情況,建議使用計畫指南並附加該提示一起使用(如下圖)。

image