Cursor verus while loop - what are the advantages/

2019-01-25 03:24发布

问题:

Is it a good idea to use while loop instead of a cursor? What are the advantages/disadvantages of cursors?

回答1:

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)



回答2:

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.



回答3:

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.



回答4:

Some disadvantages of cursors are here

Then there is also this (Actually a very interesting problem called - "Halloween problem")