我在這裏問Using cursor in OLTP databases (SQL server)優點和使用遊標(在SQL Server)的利弊
一個問題,人們迴應說光標不應該被使用。
我覺得光標是非常強大的工具,我打算使用它(我不認爲微軟支持壞的開發者的遊標)。假設你有一個表格,其中一列中的值取決於值在上一行中的同一列。如果這是一次後端進程,你不覺得使用遊標將是一個可以接受的選擇嗎?
關閉我的頭頂我可以想到幾個場景,我覺得在使用遊標時不應該感到羞恥。如果你們有其他感覺,請告訴我。
1>一次性後臺進程清理在幾分鐘內完成執行的錯誤數據。 2>長時間運行一次的批處理過程(類似於每年一次)。 如果在上面的場景中,其他進程沒有明顯的壓力,那麼花費額外的時間編寫代碼來避免遊標是不合理的嗎?換句話說,在某些情況下,開發人員的時間比對其他任何事物幾乎沒有影響的進程的性能更重要。
在我看來,這些應該是你應該認真嘗試避免使用遊標的場景。 1>從網站上調用的一個存儲過程,可以經常被調用。 2>一天運行多次並佔用大量資源的SQL作業。
我認爲,如果不分析手邊的任務並實際衡量其他選擇,就會形成一個像「不應該使用遊標」這樣的通用語句。
請讓我知道你的想法。
看起來像Sql Server 2012將支持以基於集合的方式從前一行獲取值的情況。 – automatic 2012-02-16 23:25:55
「從網站調用的存儲過程」太含糊。如果光標是解決問題的最合理選擇,並且必須從網頁調用該過程... – 2012-02-17 04:37:21