oracle数据库数据量较大时更新数据较慢问题

 

           这今天在研究kettle工具,是一款国外纯java开发的开源ETL工具,抽取数据确实非常方便,大家有空可以去下载下来试试看,方便之处在于它不用安装,解压完了就能直接用了(必须提前配置jdk和jre环境到系统环境中)。今天要说的不是这款软件,问题是由使用这个软件引起的,我在抽取数据后需要完成一个更新操作语句如下:

update case_person_saxx a set a.case_id=(select id from case_xzcf b where b.app_id = a.app_id) ;

update invole_case_unit_saxx a set a.case_id=(select id from case_xzcf b where b.app_id = a.app_id);

 

 上面的语句中case_person_saxx表和case_xzcf 表中数据量大概在16万条左右,说起来也不是特别大,但是这个语句执行起来特别的慢,我等了半个多小时都没执行完,后来建索引稍微快一点,在网上找到一种更快捷的更新语句(因为我数据库基础不好很多语句不熟悉,呵呵!大神来看到了别笑话我就行!)如下:

merge into case_person_saxx t
using (select max(id) as id, app_id from case_xzcf group by app_id) s
on (t.app_id = s.app_id)
when matched then
  update set t.case_id = s.id;


  merge into invole_case_unit_saxx t
using (select max(id) as id, app_id from case_xzcf group by app_id) s
on (t.app_id = s.app_id)
when matched then
  update set t.case_id = s.id;

 

测试了一下 7秒钟就完成了更新,瞬间让我觉得自己懂得太少,真心需要好好学习。

记下来以便自己以后查阅,如果有同样困扰的同学可以试试这个语句。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值