我有一個SQL,要逐條記錄來操作,其中想到sql的游標和循環,我想了解游標和循環的區別,使用哪個效能會更好。謝!

解决方案 »

  1.   

    尽可能不使用游标,它占用大量的资源。如果需要row-by-row地执行,尽量采用非游标技术,如:在客户端循环,用临时表,Table变量,用子查询,用Case语句等等。   游标可以按照它所支持的提取选项进行分类:只进必须按照从第一行到最后一行的顺序提取行。FETCH NEXT 是唯一允许的提取操作,也是默认方式。可滚动性可以在游标中任何地方随机提取任意行。游标的技术在SQL2000下变得功能很强大,他的目的是支持循环。   有四个并发选项READ_ONLY:不允许通过游标定位更新(Update),且在组成结果集的行中没有锁。   OPTIMISTIC WITH valueS:乐观并发控制是事务控制理论的一个标准部分。乐观并发控制用于这样的情形,即在打开游标及更新行的间隔中,只有很小的机会让第二个用户更新某一行。当某个游标以此选项打开时,没有锁控制其中的行,这将有助于最大化其处理能力。如果用户试图修改某一行,则此行的当前值会与最后一次提取此行时获取的值进行比较。如果任何值发生改变,则服务器就会知道其他人已更新了此行,并会返回一个错误。如果值是一样的,服务器就执行修改。