SQL Cursors…Any use cases you would defend?

后端 未结 10 695
萌比男神i
萌比男神i 2021-01-06 23:01

I\'ll go first.

I\'m 100% in the set-operations camp. But what happens when the set logic on the entire desired input domain leads to a such a large retrieval that

10条回答
  •  感情败类
    2021-01-06 23:47

    I've got plenty of cases where rows from a configuration table have to be read and code generated and executed, or in many meta-programming scenarios.

    There are also cases when cursors simply outperform because the optimizer is not smart enough. In those cases, either there is meta-information in your head which is simply not revealed to the optimizer through the indexes or statistics on the tables, or the code is just so complicated that the joins (and usually, re-joins) simply can't be optimized in the way you can visualize them in a cursor-based fashion. In SQL Server 2005, I believe CTEs tend to make this look a lot simpler in the code, but whether the optimizer also sees them as simpler is hard to know - it comes down to comparing the execution plan to how you think it could be done most efficiently and making the call.

    General rule - don't use a cursor unless necessary. But when necessary, don't give yourself a hard time about it.

提交回复
热议问题