我創造了許多光標在我的應用程序通過行操作中我只選擇了500或1000個記錄每個光標單次運行執行行,以便光標可以完成的循環在單次運行中很快成爲postilion,換句話說,我爲單個遊標運行選擇了有限數量的記錄。SQL服務器 - 雖然與「本地靜態READ_ONLY FORWARD_ONLY」光標
要執行光標更快,而不是放在我用以下聲明光標的兩種服務器的負載。
宣言1: DECLARE DB_CURSOR_01 CURSOR本地靜態READ_ONLY FORWARD_ONLY FOR
宣言2: DECLARE DB_CURSOR_02 CURSOR FAST_FORWARD FOR
注:我不使用鼠標的默認聲明,我正在使用其他類型的遊標使其工作得更快,據我所知,上面提到的聲明1比聲明2更快,糾正我,如果我錯了。
問: 由行操作做行的另一種方式是通過「在使用臨時表圈」。所以,現在我的問題是,如果我使用臨時表將所有遊標轉換爲while循環,是否有助於提高服務器性能?
其實我們的DBA指出,服務器的性能是因爲遊標的影響,如果我把那麼多的努力,所有這些光標到while循環,它會給我帶來的性能優勢的轉換?或者我在上面聲明的聲明1中聲明遊標的方式與while循環的性能相同?
帶臨時表的while循環是怎麼樣的? – IngoB
您確定無法用單個更新替代遊標(例如,在臨時表中)嗎?我們過去用遊標開發了大量的遷移,一次遷移需要數小時才能運行。然後我們意識到,用簡單的更新來替換所有的遊標是非常容易的,這使得與光標解決方案相比,遷移閃電很快。 – IngoB
@IngoB在我的情況下,我不只是在單個表上進行更新,在我的遊標下,我正在執行的操作可能與執行其他選擇語句的計算然後將數據插入到其他表中一樣。這只是一個例子,我可能會有不同的遊標執行不同的操作。 –