執行計畫是 SQL Server 查詢優化器根據統計資料、索引結構與成本演算法生成的「行動路線圖」。掌握如何獲取、閱讀並解讀執行計畫,是 T-SQL 效能調校的核心技能。本文透過 AdventureWorks 範例資料庫,示範圖形化執行計畫的實戰操作與關鍵資訊解讀。
若要檢視執行計畫,登入帳戶需具備 SHOWPLAN 權限:
GRANT SHOWPLAN TO [username];
本文範例使用簡單查詢:SELECT * FROM [dbo].[DatabaseLog]; 並假設已安裝 SQL Server 2005 以上版本與 AdventureWorks 資料庫。
| 類型 | 生成時機 | 資料來源 | 適用場景 |
|---|---|---|---|
| 估計執行計畫 | 查詢執行前 | 中繼資料、統計資料、成本模型 | 快速評估查詢邏輯、索引缺失、基數估計偏差 |
| 實際執行計畫 | 查詢執行後 | 儲存引擎實際運行統計(實際資料列數、I/O、CPU、執行時間) | 精準診斷效能瓶頸、參數嗅探、統計資料過期 |
或右鍵選單「顯示估計執行計畫」或 Ctrl + L
或右鍵選單「包含實際執行計畫」或 Ctrl + M 再執行查詢將滑鼠移至操作圖示上,會彈出詳細屬性視窗。以下為核心欄位說明:
True 表示輸出已排序(可能因 ORDER BY 或索引順序),False 則需額外 Sort 操作。原查詢:SELECT * FROM [dbo].[DatabaseLog]; → Table Scan 成本 100%,Ordered=False。
修改後:SELECT * FROM [dbo].[DatabaseLog] ORDER BY PostTime;
計畫出現 Sort 操作(成本 62%),且 Table Scan 變為 Ordered=True。這揭示:優化器為了滿足排序需求,可能選擇掃描後再排序,而非使用索引。若 PostTime 有索引,優化器應改走 Index Scan + Ordered=True,避免額外 Sort 成本。
掌握執行計畫解讀,就能從「猜測調優」轉向「精準診斷」,是每位 DBA 與開發者必備的核心能力。