咨询批量执行一批SQL语句的优化

无敌猪KK 2018-07-18 02:47:15
咨询一个各位老师,我有几千条update 语句,放到begin .... end的语句块中,执行效率比较底,不知道有什么好的方法吗?
这些update 都是单表更新,如 update aa set x=y where id=z 这样简单的。我测试了语句块中放6000行这样的Update语句,执行完要7分钟,3000条要1分多钟,我不知道语句块中放多少语句是最合理的。放1万条ORACLE直接给我报错,错误 如下:ORA-04030,在尝试分配4088字节(PLS CGA hp.pdzgM64_New_Link)时进程内存不足。
...全文
237 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
卖水果的net 2018-07-18
  • 打赏
  • 举报
回复
如果都 是 update aa set x=y where id=z 这样的,可以考虑改成绑定变量形式的,看看能不能正则替换一下。

declare
v_sql varchar2(1000);
begin
v_sql := 'update aa set x = :1 where id = :2';
execute immediate v_sql using 'ccc', 100;
execute immediate v_sql using 'ddd', 200;
end;
  • 打赏
  • 举报
回复
用 游标 加forall 分批次更新

17,090

社区成员

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

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