在最佳化SQL效能的時候,經常用到的就是查看執行進化,最簡單的無非是“Ctrl + L”來查看執行計畫,不過初次看到這個介面的朋友可能會有無從下手的感覺,SQL Server用表徵圖的方式將我們的SQL語句執行過程展示了出來。
首先,我們需要瞭解的是各個表徵圖的意思,限於篇幅,這裡就不詳述了,點擊查看MSDN官方解釋。
其次,當我們將滑鼠移到各個表徵圖上面的時候,會出現一些資料,這些資料的解釋如下(點擊查看MSDN說明):
| 工具提示項 |
說明 |
Physical Operation |
使用的物理運算子,例如 Hash Join 或 Nested Loops。以紅色顯示的物理運算子表示查詢最佳化工具已發出警告,例如丟失列統計資訊或丟失聯結謂詞。這可能導致查詢最佳化工具選擇比預期的效率低的查詢計劃。有關列統計資訊的詳細資料,請參閱使用統計資訊提高查詢效能。 當圖形執行計畫建議建立統計資訊、更新統計資料或建立索引時,使用 SQL Server Management Studio 物件總管中的捷徑功能表可以立即建立或更新丟失的列統計資訊和索引。有關詳細資料,請參閱索引操作指南主題。 |
Logical Operation |
與物理運算子匹配的邏輯運算子,如 Inner Join 運算子。邏輯運算子列在物理運算子之後,兩者均位於工具提示的頂部。 |
Estimated Row Size |
操作符產生的行的估計大小(位元組)。 |
Estimated I/O Cost |
用於執行操作的所有 I/O 活動的估計開銷。此值應儘可能低。 |
Estimated CPU Cost |
用於執行操作的所有 CPU 活動的估計開銷。 |
Estimated Operator Cost |
用於執行此操作的查詢最佳化工具的開銷。此操作的開銷以佔查詢總開銷的百分比的形式顯示在括弧中。由於查詢引擎選擇最高效的操作來執行查詢或執行語句,因此此值應儘可能低。 |
Estimated Subtree Cost |
查詢最佳化工具執行此操作及同一子樹內位於此操作之前的所有操作的總開銷。 |
Estimated Number of Rows1 |
運算子產生的行數。 |