顯示圖形執行計劃 (SQL Server Management Studio)

SQL Server Management Studio 是一個互動式的圖形工具,它讓資料庫管理員或開發人員可以撰寫查詢、同時執行多個查詢、檢視結果、分析查詢計劃與接受協助以改善查詢效能。[執行計劃] 選項會以圖形方式顯示 SQL Server 查詢最佳化工具所選取的資料擷取方法。圖形執行計劃使用圖示來呈現特定陳述式的執行與 SQL Server 中的查詢,而非如 Transact-SQL SET 陳述式選項 SET SHOWPLAN_ALL 或 SET SHOWPLAN_TEXT 所產生的表格表示法,或 SET SHOWPLAN_XML 所產生的 XML 表示法。圖形顯示對於了解查詢的效能特性非常有幫助。SQL Server Management Studio 會顯示遺漏了哪些統計資料,因而強迫查詢最佳化工具對述詞選擇性做估計,然後讓那些遺漏的統計資料可以輕易地建立出來。

ms178071.note(zh-tw,SQL.90).gif附註:
加密的預存程序或觸發程序不會顯示執行計劃。

使用執行計劃選項

將包含想要分析之查詢的 Transact-SQL 指令碼,開啟或輸入 Management Studio 查詢編輯器。在將指令載入 Management Studio 查詢編輯器之後,您可以選擇要顯示估計執行計劃或實際執行計劃,方法是在查詢編輯器工具列上,按一下 [顯示估計執行計劃][包括實際執行計劃] 按鈕。如果按一下 [顯示估計執行計劃],就會剖析該指令碼並產生估計執行計劃。如果按一下 [包括實際執行計劃],就必須在產生執行計劃之前,先執行指令碼。在剖析或執行指令碼之後,按一下 [執行計劃] 索引標籤,以查看執行計劃輸出的圖形表示。

若要使用 Management Studio 中的圖形執行計劃功能,以及使用顯示計劃 Transact-SQL SET 陳述式選項,使用者必須要有足夠的權限,才能執行 Transact-SQL 陳述式與查詢。對於包含參考物件的所有資料庫,SHOWPLAN 權限也必須已經授與給使用者。如需詳細資訊,請參閱<顯示計劃安全性>。

閱讀圖形執行計劃的輸出

若要檢視執行計劃,請按一下結果窗格中的 [執行計劃] 索引標籤SQL Server Management Studio 中的圖形執行計劃輸出是從右向左讀,從上向下讀。在被分析的批次中的每個查詢都會顯示出來,包括每個查詢佔批次處理總成本的百分比在內。如需在 Management Studio 中用來顯示執行計劃之圖示的詳細資訊,請參閱<圖形執行計劃圖示 (SQL Server Management Studio)>。

以下描述提供解譯 Management Studio 中之圖形執行輸出的指導方針:

  • 樹狀結構中的每個節點都會以圖示表示,以指定用來執行查詢或陳述式部份的邏輯與實體運算子。

  • 每個節點都與父節點有關。同一個父系的子節點都畫在同一資料行。不過,相同資料行的所有節點不一定會有相同的父系。有箭頭的尺規會將每個節點連接到它的父系。

  • 運算子是顯示為與特定父系相關的符號。

  • 箭頭寬度與資料列數成比例。可能的話,會使用實際資料列數。否則,使用預估的資料列數。

  • 查詢中若包含多個陳述式,會繪製多個查詢執行計劃。

  • 樹狀結構分成幾個部份是由執行的陳述式類型來決定。

  • 對於包含多個 CPU 的平行查詢,圖形執行計劃中每個節點的 [屬性],會顯示有關所使用之作業系統執行緒的資訊。若要檢視節點的屬性,請以滑鼠右鍵按一下節點,然後按一下 [屬性]。如需平行查詢的詳細資訊,請參閱<平行查詢處理>。

    陳述式類型 樹狀結構元素

    Transact-SQL 與預存程序

    如果陳述式是預存程序或 Transact-SQL 陳述式,它會變成圖形執行計劃樹狀結構的根。預存程序可以有多個子系,代表預存程序呼叫的陳述式。每個子系都是樹狀圖的一個節點或分支。

    資料操作語言 (DML)

    如果 SQL Server 查詢最佳化工具分析的陳述式是 DML 陳述式 (如 SELECT、INSERT、DELETE 或 UPDATE),DML 陳述式就是樹狀圖的根。DML 陳述式最多可以有兩個子系。第一個子系是 DML 陳述式的執行計劃。第二個子系代表觸發程序 (如果陳述式用到的話)。

    條件式

    圖形執行計劃會將諸如 IF...ELSE 陳述式等條件陳述式 (如果條件成立,則做後續工作,否則改執行這個陳述式) 分成三個子系。IF...ELSE 陳述式是樹狀圖的根。IF 條件成為子樹節點。THEN 與 ELSE 條件以陳述式區塊代表。WHILE 與 DO-UNTIL 陳述式以類似的計劃呈現。IF 與 WHILE 都有自己的圖示。

    關聯式運算子

    查詢引擎執行的作業 (如資料表掃描、聯結與彙總) 由樹狀圖上的節點代表。

    DECLARE CURSOR

    DECLARE CURSOR 陳述式是圖形執行計劃樹狀圖的根,而其相關的陳述式則為子系或節點。

在 SQL Server 2005 中,三種提示類型會有不同的顏色:iterator (邏輯與實體運算子) 圖示為藍色、資料指標圖示為黃色,語言項目為綠色。

圖形執行計劃節點工具提示

當游標指向每個節點時,就會顯示「工具提示」資訊,如下表所述。並非圖形執行計劃中的所有節點都包含此處描述的所有「工具提示」項目。

工具提示項目 描述

實體作業

所用的實體運算子,如「雜湊聯結」或「巢狀迴圈」。實體運算子若以紅色顯示,表示查詢最佳化工具已發出警告,如遺漏資料行統計資料,或遺漏聯結述詞。這可能導致查詢最佳化工具出人意外地選擇效能低的查詢執行計劃。如需有關資料行統計資料的詳細資訊,請參閱<索引統計資料>。

當圖形執行計劃建議建立或更新統計資料或建立索引時,就可以使用 SQL Server Management Studio 之 [物件總管] 的捷徑功能表,立即建立或更新遺漏的資料行統計資料與索引。如需詳細資訊,請參閱<索引的如何主題>。

邏輯作業

符合實體運算子的邏輯運算子,如「內部聯結」運算子。邏輯運算子會列在位於在「工具提示」頂端的實體運算子後面。

估計的資料列大小

由運算子產生的估計資料列大小 (位元組)。

估計的 I/O 成本

該作業之所有 I/O 活動的估計成本。這個值應該越低越好。

估計的 CPU 成本

該作業之所有 CPU 活動的估計成本。

估計的運算子成本

查詢最佳化工具執行此作業的查詢成本。此作業的成本會當作查詢總成本的百分比顯示在括號內。因為查詢引擎會選擇最有效率的作業來執行查詢或執行陳述式,所以這個值應該越低越好。

估計的子樹成本

查詢最佳化工具執行此作業與同一子樹中此作業前面之所有作業的總成本。

估計的資料列數目1

由運算子產生的資料列數目。

1 此「工具提示」項目會當作 [資料列數目],顯示在「實際執行計劃」中。

ms178071.note(zh-tw,SQL.90).gif附註:
原本可在 SQL Server 2000 之圖形執行計劃的「引數」欄位中取得的資訊,現在會獨立出現在 SQL Server 2005 之圖形執行計劃的「工具提示」中。

圖形執行計劃節點屬性

以滑鼠右鍵按一下節點,然後按一下 [屬性],就可以在圖形執行計劃中檢視有關節點的詳細資訊。

請參閱

工作

如何:刪除索引 (SQL Server Management Studio)
如何:重建索引 (SQL Server Management Studio)
如何:重新組織索引 (SQL Server Management Studio)
如何:檢視資料庫中的所有索引 (SQL Server Management Studio)

概念

如何:修改索引 (SQL Server Management Studio)

其他資源

SET SHOWPLAN_ALL (Transact-SQL)
SET SHOWPLAN_TEXT (Transact-SQL)
SET STATISTICS PROFILE (Transact-SQL)
SET SHOWPLAN_XML (Transact-SQL)
SET STATISTICS XML (Transact-SQL)
使用索引 (Visual Database Tools)
執行計劃的如何主題

說明及資訊

取得 SQL Server 2005 協助