我有一个存储过程,它处理包含xml字段的表,并使用游标循环遍历它们并运行其他sp,行可以很多,文档也可以很大。有一些迹象表明,储存的东西在负载下会卡住。
我想知道这是否可能,因为游标是如何工作的,也许使用游标意味着它将整个结果集保存在内存中。不知何故,我总是想象游标就像循环遍历一个表,而也许它更像是从一个表中选择数据,将其存储在内存中,然后循环遍历它。游标是如何工作的?
PS。就我个人而言,从性能和意识形态的角度来看,我都讨厌游标(应该基于SQL进行设置),并像避免瘟疫一样避免游标。这是一个遗留代码的例子,我现在已经将其转换为使用临时表,但我仍然很好奇DS。
发布于 2011-07-27 17:09:00
这将取决于您使用的游标类型。键集游标只会将PK存储在tempdb中,然后根据需要在其他列上进行查找。其他的可能一次存储检索更多的信息、更多的行、单行等。
下面是对每种类型的很好的描述:http://searchsqlserver.techtarget.com/feature/Part-1-How-cursors-work
https://stackoverflow.com/questions/6841305
复制相似问题