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

解决方案 »

  1.   

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

  2.   

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

  3.   


    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                --逐行遍历
                      --不过有时候定位挺好用
      

  4.   

    游标OPEN  CLOSE 应该只有一次吧~原因还是逐行执行~
      

  5.   

    游标循环,每次相当于一个select操作
      

  6.   

    有时间看看《SQL 性能调优》这本书有说明
      

  7.   

    我们知道关系数据库管理系统实质是面向集合的,在MS SQL SERVER 中并没有一种描述表中单一记录的表达形式,除非使用where 子句来限制只有一条记录被选中。因此我们必须借助于游标来进行面向单条记录的数据处理。由此可见,游标允许应用程序对查询语句select 返回的行结果集中每一行进行相同或不同的操作,而不是一次对整个结果集进行同一种操作;它还提供对基于游标位置而对表中数据进行删除或更新的能力;而且,正是游标把作为面向集合的数据库管理系统和面向行的程序设计两者联系起来,使两个数据处理方式能够进行沟通。