游標 = 逐列處理 = 慢、鎖久、記錄檔大、難並行。優先考慮集合式操作 (`INSERT...SELECT`、`MERGE`、`UPDATE...JOIN`、`CTE` 遞迴)。
分析業務分支,將「無資料需初始化」等大量同類情況提取出來,用單一 `INSERT...SELECT` 完成,僅剩少數複雜分支走游標。例:`IF NOT EXISTS` 批次初始化 → `INSERT INTO Target SELECT ... FROM Source WHERE NOT EXISTS ...`。
80/20 法則:找出 80% 執行次數的路徑,針對該路徑極致優化 (集合化、索引覆蓋、減少往返)。低頻異常路徑保留游標邏輯即可。
原邏輯:逐筆檢查 `tbTodo` 是否存在 → 不存在則 `INSERT`。
優化:統計目標範圍總數 → `IF COUNT=0` → 單一 `INSERT INTO tbTodo SELECT ... FROM Source` 一次性完成。
效果:從 O(N) 往返降為 O(1),鎖持有時間從秒級降至毫秒級。
游標是「手術刀」,不是「菜刀」。集合思維是 SQL 開發者的核心內功。重構步驟:識別游標 → 分析業務分支 → 提取高頻集合化路徑 → 殘留低頻精簡游標 → 驗證效能與正確性。堅持這套流程,90% 以上游標可被消除或大幅優化。