本文透過 SHOWPLAN_ALL 輸出對比,展示將子查詢改寫為外部聯結如何顯著降低邏輯讀與 CPU 成本。並分享多項調優微技巧:避免 SELECT *、善用覆蓋索引、檢查參數嗅探、統計資訊維護等,擴展您的效能優化工具箱。
同一結果集下,外部聯結僅需子查詢一半邏輯讀,CPU 與耗時顯著降低。優化器雖可自動「扁平化」部分子查詢,但明確寫出 JOIN 給予優化器更多連接順序選擇,穩定產生最佳計畫。
LEFT JOIN + IS NULL 或 NOT EXISTS。SELECT *,明確列出欄位,利用覆蓋索引。WHERE YEAR(OrderDate)=2023),改用範圍查詢。OPTION (RECOMPILE)、OPTIMIZE FOR、區域變數重寫。關注 Estimated Rows vs Actual Rows 差異、Key Lookup(回表)、Sort、Hash Match 高成本運算子,針對性建立索引或改寫查詢。