oracle 游标 打开表 使用 fetch bulk collect 取数据速度很慢

wangyou_1987 2017-11-30 04:32:59
各位大神,请问 一张表 有百万数据记录,需要读每一条数据,再对数据处理,使用fetch bulk collect 取数据很慢。有什么方法解决吗
...全文
577 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyou_1987 2017-12-19
  • 打赏
  • 举报
回复
引用 4 楼 jdsnhan 的回复:
[quote=引用 楼主 wangyou_1987 的回复:] 各位大神,请问 一张表 有百万数据记录,需要读每一条数据,再对数据处理,使用fetch bulk collect 取数据很慢。有什么方法解决吗
最好明确引用需求和场景。百万数据,用游标,不是一个好办法[/quote] 就是 erp把当前日期前所有的POS数据通过dblink写入表a中,我这边再去读每一条记录,取出相应的字段,再处理,写入另一张表b,同时把当前记录备insert c表,再把记录从a表中删除。不用游标,用什么方法可以快速的处理?
wangyou_1987 2017-12-19
  • 打赏
  • 举报
回复
引用 3 楼 qq646748739 的回复:
给你提供一个批量删除的例子:

declare  
   cursor mycursor is select rowid from 表名称 where 取数条件
   type rowid_table_type is table of rowid index by pls_integer;
   v_rowid  rowid_table_type;
begin
   open mycursor;
   loop
     fetch mycursor bulk collect into v_rowid limit 10000;   --每次处理10000行,也就是每10000行提交1次
     exit when v_rowid.count=0;
     forall i in v_rowid.first..v_rowid.last
        delete from 表名称 where rowid = v_rowid(i);
     commit;
   end loop;
   close mycursor;
end;
/
剩下的自行思考
我就是按照这种方法取的,越到后面fetch 的时间就越长
jdsnhan 2017-12-01
  • 打赏
  • 举报
回复
引用 楼主 wangyou_1987 的回复:
各位大神,请问 一张表 有百万数据记录,需要读每一条数据,再对数据处理,使用fetch bulk collect 取数据很慢。有什么方法解决吗
最好明确引用需求和场景。百万数据,用游标,不是一个好办法
碧水幽幽泉 2017-11-30
  • 打赏
  • 举报
回复
给你提供一个批量删除的例子:

declare  
   cursor mycursor is select rowid from 表名称 where 取数条件
   type rowid_table_type is table of rowid index by pls_integer;
   v_rowid  rowid_table_type;
begin
   open mycursor;
   loop
     fetch mycursor bulk collect into v_rowid limit 10000;   --每次处理10000行,也就是每10000行提交1次
     exit when v_rowid.count=0;
     forall i in v_rowid.first..v_rowid.last
        delete from 表名称 where rowid = v_rowid(i);
     commit;
   end loop;
   close mycursor;
end;
/
剩下的自行思考
wangyou_1987 2017-11-30
  • 打赏
  • 举报
回复
引用 1 楼 qq646748739 的回复:
利用rowid批量读取数据,比如一次处理1w条数据。
弱弱的 问一下,怎么使用使用rowid,能否提供一下 sql 存储过程
碧水幽幽泉 2017-11-30
  • 打赏
  • 举报
回复
利用rowid批量读取数据,比如一次处理1w条数据。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧