1

我在游标导致死锁方面有过一些不好的经历。我一直在尽可能地消除游标。当它们不可避免时,我会尝试在光标打开时尽量减少完成的工作量。

将数据复制到表变量并在表变量上构建游标会更好吗?

我知道答案可能取决于数据集的大小。此刻,我关心的是一个很少更新的非常小的数据集(一堆记录)。有时我仍然会在大型数据集上创建复杂的循环。

复制到表变量有什么好处,还是我把事情复杂化了?

4

1 回答 1

2

如果您在声明时定义游标STATIC,SQL Server 将自动为您制作数据的临时副本。

文档

静止的

定义一个游标,该游标制作数据的临时副本以供游标使用。对游标的所有请求都是从 tempdb 中的这个临时表中回答的;因此,对基表所做的修改不会反映在对该游标进行的提取返回的数据中,并且该游标不允许修改。

于 2011-05-25T14:48:05.777 回答