0
A
回答
2
儘量簡潔,我可以管理:
在關係數據庫引擎,所有的操作(無論是在存儲過程或沒有)通常會*變得更好用,只是因爲這些發動機進行優化SET-基於集合的邏輯基於操作。
對於引擎中的單個原子操作,無論是影響1行還是1,000,000行,通常都有固定的資源成本(可能相當高)。
遊標會產生更高的成本,因爲數據庫引擎必須將遊標狀態保持在原子操作成本之上。
*在程序邏輯性能優於基於集合的情況下,會出現一些邊緣案例/類問題(具體取決於您的RDBMS)。
0
所有(或幾乎所有)RDMS都針對基於集合的操作進行了優化,而不是基於行的。對於絕大多數情況,基於集合的解決方案都優於基於行的解決方案。例如,即使SELECT * FROM table1
的執行速度比用光標執行速度快很多倍。但是,有些情況下光標解決方案表現更好。例如,在某些RDMS(即SQLServer 2005)中使用基於集合的方法計算運行聚合涉及多次重新調用數據,而基於光標的操作只需執行一次。
另一種需要使用遊標的情況是,應用程序的業務邏輯需要您分別處理每一行。
相關問題
- 1. 將光標轉換爲基於集合的操作
- 2. 設置基於操作和調用存儲過程
- 3. MySQL存儲過程基於參數的光標
- 4. 光標在存儲過程
- 5. Oracle存儲過程 - 光標
- 6. SQL觸發器 - 使用基於集合的操作轉換光標
- 7. db邏輯:最好基於應用程序或存儲過程?
- 8. c#linq - 基於集合的操作
- 9. WCF服務存儲和操作集合?
- 10. 在NativeDragDrop操作過程中可以設置鼠標光標嗎?
- 11. 值java.sql.SQLException:ORA-08103:對象不再存在於存儲過程光標
- 12. 存儲過程中的動態光標
- 13. 存儲過程中的光標問題
- 14. 編寫存儲過程,而不光標
- 15. 存儲過程中的動態光標
- 16. Microsoft Access - 使用光標存儲過程
- 17. SQL Server存儲過程/光標
- 18. 存儲過程:光標不好?
- 19. SQL Server存儲過程/光標
- 20. 卡在存儲過程和光標
- 21. 更改存儲過程 - 光標MSSQL
- 22. MySQL存儲過程與光標錯誤
- 23. mySQL存儲過程 - 光標錯誤
- 24. 存儲過程和sqlsrv_num_rows - 光標錯誤?
- 25. MySQL的 - 光標在存儲過程
- 26. txpostgres存儲過程返回光標
- 27. 存儲過程太慢(使用光標)
- 28. SQL Server存儲過程避免光標
- 29. Oracle SQL存儲過程光標打印
- 30. 基於集合的值設置圖標