Cursor verus while loop - what are the advantages/disadvantages of cursors?
-
02-07-2019 - |
Question
Is it a good idea to use while loop instead of a cursor? What are the advantages/disadvantages of cursors?
Solution
Some of these depends on the DBMS, but generally:
Pros:
Outperform loops when it comes to row-by-row processing
Works reasonably well with large datasets
Cons:
Don't scale as well
Use more server resources
Increases load on tempdb
Can cause leaks if used incorrectly (eg. Open without corresponding Close)
OTHER TIPS
I'm following this bit of advice:
[...] which is better: cursors or WHILE loops? Again, it really depends on your situation. I almost always use a cursor to loop through records when necessary. The cursor format is a little more intuitive for me and, since I just use the constructs to loop through the result set once, it makes sense to use the FAST_FORWARD cursor. Remember that the type of cursor you use will have a huge impact on the performance of your looping construct.
— Tim Chapman in Comparing cursor vs. WHILE loop performance in SQL Server 2008
The linked article contains simple examples of how to implement each approach.
I would ask you what you are doing with that cursor/while loop.
If you are updating or returning data why don't you use a proper WHERE clause. I know people who would say you should never use cursors.