oracle 效率

zxj0905094127 2017-09-20 04:12:13
update CUSTAMONT_2017_07 c set day07 = (select sum(s.zhhuye) from sdckcrm s group by coreacno having s.coreacno = c.coreacno)


现在要将 sdckcrm zhhuye 更新到 CUSTAMONT_2017_07 中的day07
两个表的数据大概20w 现在执行了3小时 没有成功
求各位大牛指点下
...全文
679 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxj0905094127 2017-09-28
  • 打赏
  • 举报
回复
引用 8 楼 hi537638 的回复:
merge into CUSTAMONT_2017_07 t using (select t1.coreacno,sum(t2.zhhuye) zhhuye from CUSTAMONT_2017_07 t1,sdckcrm t2 where t1.coreacno = t2.coreacno group by t1.coreacno) t0 on (t.coreacno = t0.coreacno) when matched then update t.day07 = t0.zhhuye; 这样更新不超过2分钟
赞一个 后来百度的 也是用的这个方法
「已注销」 2017-09-22
  • 打赏
  • 举报
回复
merge into CUSTAMONT_2017_07 t using (select t1.coreacno,sum(t2.zhhuye) zhhuye from CUSTAMONT_2017_07 t1,sdckcrm t2 where t1.coreacno = t2.coreacno group by t1.coreacno) t0 on (t.coreacno = t0.coreacno) when matched then update t.day07 = t0.zhhuye; 这样更新不超过2分钟
「已注销」 2017-09-22
  • 打赏
  • 举报
回复
楼主你百度使用merge into,更新超过2分钟算我输
碧水幽幽泉 2017-09-21
  • 打赏
  • 举报
回复
引用 3 楼 qq646748739 的回复:
试试下面这个SQL:
update custamont_2017_07 c 
set c.day07 = (select sum(s.zhhuye) from sdckcrm s where s.coreacno = c.coreacno)
where exists(select null from sdckcrm s where s.coreacno = c.coreacno);

commit;


用我这个吧,其他update语句都是有问题的。
要不然会更新整张表,即使 s.coreacno 不等于c.coreacno的记录,也会更新。
imcmuc 2017-09-21
  • 打赏
  • 举报
回复
update CUSTAMONT_2017_07 c
   set day07 =
       (select sum(s.zhhuye)
          from sdckcrm s
         where s.coreacno = c.coreacno
         group by coreacno)
先筛选后分组计算,二十万数据在coreacno 加个索引,飞快~
imcmuc 2017-09-21
  • 打赏
  • 举报
回复
update CUSTAMONT_2017_07 c set day07 = (select sum(s.zhhuye) from  sdckcrm s where  s.coreacno = c.coreacno group by coreacno )
先筛选后分组计算
碧水幽幽泉 2017-09-20
  • 打赏
  • 举报
回复
试试下面这个SQL:
update custamont_2017_07 c 
   set c.day07 = (select sum(s.zhhuye) from sdckcrm s where s.coreacno = c.coreacno)
where exists(select null from sdckcrm s where s.coreacno = c.coreacno);

commit;

  • 打赏
  • 举报
回复
换成 后面那个查询的结果作为派生表,然后用 =(select .. WHERE A.Q=B.W) 这种能快点吗?
minsic78 2017-09-20
  • 打赏
  • 举报
回复
楼主,看上去这个group by好像有点画蛇添足,而且这么写,子查询里的sdckcrm会经历20万次的表扫描……

17,078

社区成员

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

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