當你移到執行計畫的某個節點時,會顯示以下資訊,來看看這些項目分別代表什麼意思。
重點說明
以下為 Azure Data Studio 檢視執行計畫的畫面。
連接方式
雜湊連接、巢狀迴圈連接、合併連接等,在連接表格 (Join) 時會顯示在最上方。
索引方式
索引搜尋、索引掃描 ─ 叢集、非叢集,有使用索引查詢資料時會顯示在最上方。
實際的資料列數目 (Actual Number of Rows for All Executions)
實際查詢取得的資料量。
估計的資料列數目 (Estimated Number of Rows for All Executions)
基於統計計算的估計值。
- 應該減少至合理的資料量 (ex. 如果只要處理某部門的員工資料,不應該把整間公司的員工都抓進來)。
- 差異太大時,表示統計資訊老舊,可能產生不合適的執行計畫。
Missing Index
提示你可以建立什麼樣的索引,以增進查詢效能 (個人經驗: 請考慮使用的場合是否有大量修改、寫入或刪除,避免改善查詢後,反而導致其它動作的效能變差)
排序
如果有合適已排序索引,會被拿來使用。盡可能只保留需要的資料欄位作排序。
述詞 (Predicate)
每個運算子的搜尋條件,有指定 WHERE 條件時會顯示。
- Predicate: 會藉由「資料表掃描」篩選欄位內的資料。
- Seek Predicate: 搜尋條件,會藉由「索引搜尋」篩選欄位內的資料。
警告 (Warning)
例如:隱含型別轉換 (轉型會導致效能降低,且無法利用索引)、排序警告 (如果因為資料量大時,需要從磁碟的 tempdb 排序)
估計 CPU 與 IO 成本 (Estimated CPU Cost, Estimated I/O Cost)
整個執行計畫花費多少百分比執行此項作業。請留意 0 % 的狀況,仍有耗費一點點成本。
利用估計值計算出可能的 CPU 與 IO 成本,有可能不是實際上的資源耗費成本,例如,執行過程有呼叫 function。
下一篇是資料表的連接方式:SQL Server 效能搶救 (4) 執行計畫 - 連接方式 – Lazy Coding