使用'for update'光标时如何获得最佳性能?

时间:2011-09-07 07:38:56

标签: sql-server

哪个是更新光标“模式”中记录的更好选择?

FETCH NEXT FROM my_cur INTO @Param_Id     
      WHILE @@FETCH_STATUS = 0 
            BEGIN 
                      ...
                      UPDATE MyTable
                      SET    name= 'aaa'
                      WHERE  MyTable.id = @Param_Id  // update the regular TABLE ...
                      ...
            END

WHERE CURRENT OF my_cur // update the current cursor row

有什么区别?

(在这种特殊情况下需要游标)。

1 个答案:

答案 0 :(得分:1)

我想想象 WHERE CURRENT OF ...会对它进行基础优化,而不需要再次为候选键重新选择嵌套UPDATE找到该行。

语义也可能略有不同 - 假设id不是候选密钥。

很高兴看到一些真实测试的结果,因为它可能会以某种方式表现出明显的优势。

快乐的编码。