您的位置:首页 > 数据库 > Oracle

oracle一条语句完成新增和修改

2017-05-27 15:36 288 查看
系统在运行过程中,由于功能的更新会产生一些脚本去更新现有的数据信息。

如:update TONY_T_SSCJ_BAK a set a.cj = (select b.cj from tony_t_sscj b where a.guid = b.guid and a.km = b.km); 这样一条SQL。基表的数据只有6000条,执行这个语句需要3s多的时间。

当我们使用mergin into的时耗时仅为0.047s。

--要更新的表

merge into tony_t_sscj_bak a

--比较的表

using tony_t_sscj b

--条件

on (a.guid = b.guid and a.km = b.km)

--条件匹配时执行update 不匹配时执行insert

when matched then

  update set a.cj = b.cj

when not matched then

  insert (guid,xh,xm,xb,xw,km,cj) values (b.guid,b.xh,b.xm,b.xb,b.xw,b.km,b.cj);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息