+ -
当前位置:首页 → 问答吧 → 游标为什么效率低?

游标为什么效率低?

时间:2011-12-28

来源:互联网

如题,常听人这么说,但是不明白为什么

作者: wzp144650   发布时间: 2011-12-28

单行循环处理当然不如集合操作效率高

作者: Haiwer   发布时间: 2011-12-28

游标是一条一条的扫描 循环着处理。

作者: fredrickhu   发布时间: 2011-12-28

单行循环处理当然不如集合操作效率高

作者: Haiwer   发布时间: 2011-12-28

单行循环处理当然不如集合操作效率高

作者: Haiwer   发布时间: 2011-12-28

无论是Oracle还是MSSQL 。。游标都是逐行遍历。。慢是肯定的。。。

作者: dielianhua_chenlong   发布时间: 2011-12-28

不管是Oracle还是MSSQL。。游标都是逐行遍历。。慢是肯定的。。

作者: dielianhua_chenlong   发布时间: 2011-12-28

因为他每一次执行都要开启关闭一次。

作者: wcsjsdn   发布时间: 2011-12-28

SQL code

        declare @id int
           declare mycursor cursor for select * from tb
           open mycursor 
           fetch next from mycursor into @id
           
           while(@@FETCH_STATUS=0)
               begin
                   if(@id > 60)
                     begin
                       print @id
                     end
                   fetch next from mycursor into @id
               end
           
           close mycursor
           deallocate mycursor

                --逐行遍历
                  --不过有时候定位挺好用

作者: ju523756055   发布时间: 2011-12-28

因为没有任何算法在里面

作者: ChenGang521   发布时间: 2011-12-28

游标OPEN CLOSE 应该只有一次吧~

原因还是逐行执行~

作者: mycodeis0000   发布时间: 2011-12-28

游标效率低的原因,是由于读写过多.

我们知道,游标是按行处理的,把查出来的结果集中的每一行的值,写到某几个变量里去,再读取该变量的值,再进行比较处理.
一般说来,读写内存变量值是比较花时间的,因此,游标执行的效率由此而降低.

作者: qianjin036a   发布时间: 2011-12-28