WEB开发网
开发学院数据库Oracle Oracle 中使用 fetch bulk collect into 批量效率... 阅读

Oracle 中使用 fetch bulk collect into 批量效率的读取游标数据

 2009-05-12 13:13:51 来源:WEB开发网   
核心提示: --声明变量,参照字段的 type 来声明类型 v_id sr_contacts.sr_contact_id%type; v_phone sr_contacts.contact_phone%type; v_remark sr_contacts.remark%type; cursor al

--声明变量,参照字段的 type 来声明类型

  v_id sr_contacts.sr_contact_id%type;
  v_phone sr_contacts.contact_phone%type;
  v_remark sr_contacts.remark%type;

cursor all_contacts_cur is  --用 rownum 来限定取出的记录数来测试

     select sr_contact_id,contact_phone,remark from sr_contacts where rownum <= 100000;

begin
   
    open all_contacts_cur;
    loop
        fetch all_contacts_cur into v_id,v_phone,v_remark;
        exit when all_contacts_cur%notfound;   
        --用 v_id/v_phone/v_remark 取出字段值来执行你的业务逻辑
        null; --这里只放置一个空操作,只为测试循环取数的效率
    end loop;
    close all_contacts_cur;
end;

执行性能比较

看看测试的结果,分别执行五次所耗费的秒数:

当 rownum <= 100000 时:

fetch bulk collect into 耗时:0.125秒, 0.125秒, 0.125秒, 0.125秒, 0.141秒

fetch into 耗时:                 1.266秒, 1.250秒, 1.250秒, 1.250秒, 1.250秒

当 rownum <= 1000000 时:

fetch bulk collect into 耗时:1.157秒, 1.157秒, 1.156秒, 1.156秒, 1.171秒

fetch into 耗时:              12.128秒, 12.125秒, 12.125秒, 12.109秒, 12.141秒

当 rownum <= 10000 时:

fetch bulk collect into 耗时:0.031秒, 0.031秒, 0.016秒, 0.015秒, 0.015秒

上一页  1 2 3 4 5 6 7  下一页

Tags:Oracle 使用 fetch

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接