不難找到開發商who think cursors are gauche但我想知道如何解決以下問題沒有一個得到的:運行存儲過程帶有參數的查詢
比方說,我有一個進程稱爲uspStudentDelete是作爲一個參數@學生卡。
uspStudentDelete應用於一堆級聯軟刪除邏輯,就像「類」,「等級」,表格標記的標誌等爲不活動的。 uspStudentDelete經過了充分的審查並已經工作了一段時間。
什麼是運行在一個查詢的結果uspStudentDelete的最佳方式(如選擇studentid從學生那裏......)在TSQL?
光標是不笨拙,它們是性能殺手。只要數據集運行時間很大,就應該避免使用它們。它可能會花費數小時或數天或毫秒或分鐘的過程。 – HLGEM 2010-04-05 21:32:27
這顯然取決於。對於大量文件,應該使刪除過程能夠處理多個學生,並以基於集合的方式(HLGEM的解決方案)執行所有依賴刪除。對於小批量,調用單一學生刪除將不會表現不佳,並且無需重新編寫SP(Andomar的解決方案)。 – 2010-04-06 04:59:44
**可以循環無光標。**我不得不加快速度慢光標循環那裏是瘋了,如果邏輯並調用在循環中許多其他程序。在某些情況下,不可能刪除循環。但是我刪除了光標(離開了循環),並且仍然有顯着的性能改進。只是谷歌「SQL服務器遊標免費循環」 – 2010-04-06 12:12:58