分区表按rowid批量update的性能问题

leonwu1981_2 2013-10-22 09:46:08
最近碰到一个难题,有一个分区表有近4000万数据,需要把几个字段全部update一遍。
我的思路是这样的:
先按分区循环,每个分区再按10000条/批循环
批量执行update tableA PARTITION (P1) set col1=?,col2=? where rowid=?;
最后发现是批量执行update语句性能慢。大概10000条要20几秒;tableA的每个分区只有几十万的数据,而其他的非分区表,200万记录,10000条update只要0.3秒左右,性能差别太大了!

...全文
376 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ze710 2014-01-16
  • 打赏
  • 举报
回复
用merge into呢 效率是不是可以提高啊
wqkjj 2013-10-30
  • 打赏
  • 举报
回复
这个肯怕要看你更新的字段是什么类型,如果更新会导致出现大量的迁移现象发生,自然会慢很多。 另外,分区表同时使用rowid更新,很可能会导致物理IO竞争,你应该看看物理IO的情况。
leonwu1981_2 2013-10-22
  • 打赏
  • 举报
回复
补充:update的字段没索引,也不是分区字段,不会导致迁移

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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