適用於:SQL Server
本文說明如何使用 SQL Server Management Studio 計劃比較功能來比較實際圖形執行計劃之間的相似性和差異性。 此功能從 SQL Server Management Studio v16 開始提供。
注意
實際執行計畫是在 Transact-SQL 查詢或批次執行後產生。 因此,實際執行計劃包含執行時期資訊,例如實際列數、資源使用量度量和執行時期警告 (如果有的話)。 如需詳細資訊,請參閱 顯示實際執行計劃。
比較計劃的能力是資料庫專業人員出於故障排除原因可能必須執行的操作:
- 尋找查詢或批次突然變慢的原因。
- 瞭解查詢重寫的效果。
- 觀察已導入至結構描述設計的特定效能增強變更 (例如,新索引) 如何有效地變更執行計畫。
「 計劃比較」 功能表選項允許並排比較兩個不同的執行計劃,以便更輕鬆地識別相似性和變更,以解釋先前所述所有原因的不同行為。 此選項可在下列項目之間進行比較:
- 兩個先前儲存的執行計畫檔案 ( .sqlplan 延伸模組)。
- 一個使用中的執行計畫和一個先前儲存的查詢執行計畫。
- 查詢存放區中兩個已選取的查詢方案。
提示
計劃比較可以使用任何 .sqlplan 檔案,即使來自舊版的 SQL Server 也能正常運作。 此外,此選項會啟用離線比較,因此不需連線到 SQL Server 執行個體。
比較兩個執行計畫時,執行計畫中本質上相同的部分會以相同的顏色和模式進行標示。 在一個計劃中選取有色區域,會將另一個計劃置於該計劃中的相符節點上。 您仍然可以比較執行計畫中不相符的運算子和節點,但在此情況下,您必須手動選取要比較的運算子。
重要
只使用被視為要變更計畫圖形的節點來檢查相似之處。 因此,在計劃相同子區段中的兩個節點中間,可能有一個未著色的節點。 在這種情況下,缺少顏色意味著在檢查部分是否相等時沒有考慮節點。
比較執行計畫
使用 [檔案] 功能表開啟先前儲存的查詢執行計劃檔案 (
.sqlplan) ,然後選取 [開啟檔案],或將計劃檔案拖曳至 Management Studio 視窗。 或者,如果您只執行查詢並選擇顯示它的執行計劃,請移至結果窗格中的 [執行計劃] 索引標籤。在執行計劃的空白區域中按一下滑鼠右鍵,然後選取 比較顯示計劃。
選擇您想要比較的第二個查詢計畫檔案。 第二個檔案隨即開啟,以便您可以比較計劃。
比較的計劃會開啟一個新視窗,預設情況下,一個在頂部,一個在底部。 預設選取項目是第一次出現運算子或節點,這些運算子或節點在比較計劃中很常見,但顯示計劃之間的差異。 所有反白顯示的運算子和節點均存在於這兩個比較計畫中。 在頂部或左側計劃中選擇突出顯示的運運算子會自動選擇底部或右側計劃中的相應運運算子。 在任何比較計劃中選取根節點運算子(
SELECT下圖中的節點)也會選取另一個比較計劃中的個別根節點運算子。提示
您可以滑鼠右鍵按一下執行計畫的空白區域,然後選取 [切換分隔器方向],來將執行計畫比較的顯示切換為並排顯示。
所有適用於執行計畫的縮放和導覽選項均可在計畫比較模式中運作。 如需詳細資訊,請參閱 顯示實際執行計劃。
雙重屬性視窗也會在預設選項的範圍內,於右側開啟。 兩個比較運算子中都存在但有差異的屬性前面會加上 不等 號 (≠) 以便於識別。
[c0 Showplan 分析] 比較導覽視窗同樣會在底部開啟。 有三個索引標籤可供使用:
在 [陳述式選項] 索引標籤中,預設選項是 [反白顯示類似作業],而比較計畫中相同的反白顯示運算子或節點會共用相同的色彩和線條圖樣。 通過選擇石灰圖案,在比較計劃中的相似區域之間導航。 您也可以選擇反白顯示方案中不同於相似區段的作業,方法是選取 [反白顯示與類似區段不符的作業]。
注意
根據預設,比較計劃時會忽略資料庫名稱,以允許針對具有不同名稱但共用相同架構的資料庫所擷取的計劃進行比較。 例如,在比較資料庫
ProdDBTestDB和 的計劃時。 此行為可以利用 [在比較運算子時忽略資料庫名稱] 選項來變更。在比較含多個陳述式的計劃時,[多重陳述式] 索引標籤因為能夠比較成對的正確陳述式,所以非常實用。
在 [案例] 索引標籤中,您可以找到一些最相關層面的自動化分析,以查看與比較計劃中基 數估計 (SQL Server) 差異相關的內容。 對於左窗格中列出的每個運算子,右窗格會在 [選取這裡] 中顯示案例的詳細資料, 以取得此案例的詳細資訊 連結,以及說明該案例的可能原因。
如果此視窗已關閉,請在比較計劃的空白區域上按一下滑鼠右鍵,然後選取 顯示計劃比較選項以 重新開啟。
比較查詢存放區中的執行計劃
在查詢存放區中,找出具有一個以上執行計畫的查詢。 如需查詢存放區案例的詳細資訊,請參閱查詢存放區使用案例。
使用 Shift 鍵和滑鼠的組合,為相同的查詢選取兩個方案。
使用 [Compare the plans for the select query in a separate window] \(在另一個視窗中比較所選查詢的計劃\) 按鈕,開始比較計劃。 接著適用「比較執行計畫」的步驟 4 到 6。