我們在Cursor和while循環之間選擇哪些因素。我們什麼時候應該使用遊標,什麼時候應該使用While循環?何時在SQL Server中使用遊標和While循環
0
A
回答
3
遊標是一個循環構造內置數據庫引擎,並具有各種各樣的功能。遊標允許您獲取一組數據,遍歷每條記錄,並根據需要修改值;那麼,您可以輕鬆地將這些值分配給變量並對這些值執行處理。根據您請求的光標類型,您甚至可以提取您之前提取的記錄。
由於遊標是數據庫引擎中的實際對象,因此在創建遊標和銷燬遊標時會有一些額外開銷。另外,大多數遊標操作都發生在tempdb中,因此大量使用的tempdb會因使用遊標而更加重載。
WHILE循環是一種編程結構,您可能從其他編程語言中熟悉。您可以在循環的開始處定義一個條件,只要此條件保持爲真,就會發生迭代。
WHILE循環與遊標一樣易於使用,但有時這些結構難以閱讀和/或理解,因爲查詢必須發生在基表上,必須獲取單個下一個行。在底層基表沒有主鍵列(它應該有)的情況下,這種操作非常棘手。
WHILE循環不提供遊標附帶的一些花裏胡哨的功能,例如在結果集中輕鬆地「倒退」的功能。雖然,我從來沒有遇到過除了通過帶有遊標的結果集進行直線循環之外的其他任何事情。
WHILE循環的一個優點是不必在內存中創建對象,以方便通過一組記錄來循環使用遊標所需的內容。
編輯
如果要分析兩者的功能,你可以寫用遊標聲明以及while循環和分析的使用SQL Server Profiler進行讀取的數量。這個工具會給我一個組合的每個記錄的讀數,而不是每個記錄。經驗法則表示,無論哪個更快,更好。
相關問題
- 1. 對SQL遊標使用while循環?
- 2. 如何在while循環內手動分解遊標。在SQL Server
- 3. 如何在for循環或while循環中引用遊標項?
- 4. SQL Server While循環和動態SQL
- 5. 如何在SQL Server中使用while循環使用BEGIN TRANSACTION?
- 6. SQL:在while循環中while循環
- 7. 在SQL Server中避免while循環
- 8. 如何避免sql server中的遊標?也想避免while循環
- 9. SQL Server如何在發生特定條件時循環一次遊標循環
- 10. 如何使用,同時和while循環
- 11. 在SQL查詢中使用while循環
- 12. 在sql中使用while循環
- 13. 在while循環中使用本地函數參數 - SQL Server
- 14. SQL Server:停留在WHILE循環中使用@@ fetch_status
- 15. 用while循環猜測遊戲中的while循環和if語句調試
- 16. 使用while循環的猜數遊戲
- 17. 如何在While循環中設置變量在SQL Server中
- 18. Python 2.7:ArcPy遊標while循環
- 19. 何時在while循環中使用for循環?
- 20. 在while循環中使用for循環
- 21. 在邏輯中何時使用For循環以及何時使用While循環
- 22. pl sql遊標在循環中
- 23. 如何在while循環中存在SQL Server存儲過程?
- 24. 使用||在while循環中
- 25. 如何使用SQL Server 2014構建WHILE循環
- 26. 如何在Java Jsoup while循環中移動遊標?
- 27. 在tic tac toe遊戲中將do while while循環更改爲while循環
- 28. SQL服務器循環和遊標
- 29. Java while循環遊戲
- 30. 在數組循環中使用遊標
你應該避免兩者。避免RBAR,總是去基於Set。 – mxix