我知道基于集合的解决方案是理想的,并且通常优于游标。所以,请。通过放弃“不要使用光标,使用基于集合的操作”的答案来节省您和我的时间。我问这个是因为我的谷歌搜索没有给出任何答案,并且知识可能来自经验:
1) FETCH NEXT FROM 与 FETCH FROM当我打开游标(fast_forward/static)时,在 while 循环中使用 'fetch next from' 和 'fetch next' 有区别吗?在性能方面,访问记录的顺序等。
2) ROW_NUMBER + SELECT/WHILE vs STATIC CURSOR据我了解,静态游标创建一个带有所选数据的临时表并遍历该临时表。那么,是否有任何理由使用select row_number() ..., ... from ... into ...
索引变量和迭代它select * from #tmp table where RowNumber = @IndexVar
?
3) FAST_FORWARD - 它可以分解吗?如果我有一个 fast_forward 本地游标,并且在此游标内插入/更新操作是在游标从中选择的表上执行的,有什么问题吗?(可能的周期等?)
4) PLAN FORCING有没有办法强制fast_forward 游标使用静态/动态计划?
非常感谢您的回答
PS:对于那些真正好奇的人,是的,可以将问题重写为基于集合的方法,但是由于上级的一些决定,必须使用存储过程创建/插入在主表中创建的新行.