SQL Server Cursor verus while loop - what are the advantages/disadvantages of cursors?

vcirk6k6  于 7个月前  发布在  Vant
关注(0)|答案(3)|浏览(59)

Is it a good idea to use while loop instead of a cursor?

What are the advantages/disadvantages of cursors?

mnemlml8

mnemlml81#

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.

anhgbhbe

anhgbhbe2#

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)
3htmauhk

3htmauhk3#

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.

相关问题