我一直在閱讀遊標是漂亮的slow和一個應該除非選擇避開它們。我試圖優化我的存儲過程,其中一個使用遊標。它經常被我的應用程序和許多用戶(20000)和行更新所調用。我在想,也許我應該使用別的東西作爲替代。遊標真的有多慢,以及哪種更好的替代方案?
我想要做的或想要的是獲取記錄列表,然後根據每個行值進行操作。因此,對於e.g我們不得不說 -
Employee - Id,Name,BenefitId,StartDate,EndDate
因此,基於benefitId我需要做的起始日期使用日期和結束日期和更新員工的詳細信息之間的日期不同的計算。我只是用這個人爲的例子來說明我的情況。
你對此有何看法?使用臨時表或用戶定義函數的遊標是否有更好的選擇?你應該什麼時候選擇他們,或者我們應該永遠不使用遊標?謝謝大家的幫助。
許多地方要求所有數據庫通過存儲的通配符。在存儲過程中執行復雜的處理是一個更好的做法,dba可以調整性能而不是在應用程序中放置類似的東西。此外,幾乎所有從應用程序運行的遊標都可以輕鬆地用基於集合的邏輯來代替。除了一些面向dba的管理任務外,很少需要遊標。如果您正在插入,更新或從一個或多個表中刪除,那麼您可以以基於集合的方式完成這項工作,幾乎可以在100%的時間內完成。 – HLGEM 2010-11-22 23:20:17