您的位置:首页 > 其它

对300万一张表数据,用游标进行循环,不同写法的效率比较

2017-02-14 16:12 453 查看
1、显示游标

 

declare

    cursor cur_2 is select a.cust_name from ea_cust.cust_info a;

    cust_id varchar2(100);

    

begin

    open cur_2;

    loop

        fetch cur_2 into cust_id;

        exit when cur_2%notfound;

        NULL;

    end loop;

    close cur_2;

end;

 

--耗时48秒

 

2、隐式游标

 

declare

    

begin

    for cur_2 in (select c.cust_name from ea_cust.cust_info c) loop

    

       NULL; 

    

    end loop;

 

end;

 

--耗时16秒

 

3、bulk collect into + cursor

 

declare

    cursor cur_3 is select a.cust_name from ea_cust.cust_info a;

    type t_table is table of varchar2(100);

    c_table t_table;

    to_cust_id varchar2(100); 

begin

    open cur_3;

    loop

         fetch cur_3 bulk collect into c_table limit 100;

         exit when c_table.count = 0;

         for i in c_table.first..c_table.last loop

             null;

             

         end loop;         

    end loop;

    commit;

end;

 

--耗时13秒,看样子这种最快
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: