update语句改写成merge into有时会提高运行速度

看两个案例

1.根据业务将两个嵌套子查询改写成max,速度有3min提升到3s

UPDATE OPER_792.LL_SCB_YDKB_20120730 A
SET A.DCP =
(SELECT B.PROD_OFFER_NAME
FROM OPER_792.YD_TC B
WHERE A.SERV_ID = B.SERV_ID
AND B.TC_TYPE = '合约计划'
AND ROWNUM = 1),
A.JCTC =
(SELECT B.PROD_OFFER_NAME
FROM OPER_792.YD_TC B
WHERE A.SERV_ID = B.SERV_ID
AND B.TC_TYPE = '基础套餐'
AND ROWNUM = 1)
WHERE A.DAY_ID = 20150125

merge into OPER_792.LL_SCB_YDKB_20120730 A
using (select c.SERV_ID,
max(case
when c.TC_TYPE = '合约计划' then
c.PROD_OFFER_NAME
end) col1,
max(case
when c.TC_TYPE = '基础套餐' then
c.PROD_OFFER_NAME
end) col2
from OPER_792.YD_TC c
group by c.SERV_ID) b
on (A.SERV_ID = B.SERV_ID and a.day_id = 20150125)
when matched then
update set A.DCP = b.col1, A.JCTC = b.col2

2.正常的将update 改写成merge into

update tb_result r set r.vote_count=nvl((

select temp_.vote_count

from(

  select result_id,

  count(rv_id) as vote_count

  from tb_result_vote

  group by result_id

) temp_

where temp_.result_id=r.result_id),

r.vote_count

);

merge into tb_result r

using(

select result_id,

  count(rv_id) as vote_count

  from tb_result_vote

  group by result_id) temp_

on(temp_.result_id=r.result_id)

when matched then

update set r.vote_count=nvl(temp_.vote_count,r.vote_count);

转载于:https://www.cnblogs.com/SUN-PH/p/4283247.html

update 改写 merge into相关推荐

  1. Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用

    Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object ...

  2. 【转】NHIBERNATE的各种保存方式的区别 (SAVE,PERSIST,UPDATE,SAVEORUPDTE,MERGE,FLUSH,LOCK)

    前言 今天学学习NH这个框架,在新增对象的时候,看见大神用了persist而没有用Save,心中比较疑惑,查阅资料的时候,发现这篇写的非常不错,转载供大家参考. hibernate的保存 hibern ...

  3. Hiberate中Update和Merge的一个小的区别

    1.Update和Merge的一个小区别总结 Update方法:如果要更新的对象是持久态而且在DirtyCheck的时候没有发现改变,那么就不发Update语句.如果更新的对象是游离态即使对象没有改变 ...

  4. Hibernate三种状态(Transient、Persistent、Detached)各种保存(save,persist,update,saveOrUpdte,merge,flush,lock)区别

    转载地址:http://www.2cto.com/kf/201212/178604.html 一.三种状态(Transient.Persistent.Detached) 在Hibernate中有三种状 ...

  5. update与merge

    参考地址:http://blog.csdn.net/ml5271169588/article/details/6734981 根据网上的内容总结如下: update: update tablename ...

  6. 【PL/SQL】Insert/ update/ delete/ merge

    Insert: BEGIN INSERT INTO employees (employee_id, first_name, last_name, email, hire_date, job_id, s ...

  7. PLSQL_性能优化系列17_Oracle Merge Into和Update更新效率

    2015-05-21 Created By BaoXinjian 一.摘要 以前只考虑 merge into 只是在特定场合下方便才使用的,今天才发现,merge into 竟然会比 update 在 ...

  8. Hibernate save, saveOrUpdate, persist, merge, update 区别

    Hibernate save, saveOrUpdate, persist, merge, update 区别 - 小黑客 - 博客园 https://www.cnblogs.com/xiaoheik ...

  9. 【存储过程】Merge Into语句实现Insert/Update在Oracle中的应用

    最近接到一个新的接口需求,开发一个保存数据的接口,需要完成如下功能:有一个表T,有两个字段a(主键),b,我们想在表T中做Insert/Update,如果存在,则更新T中b的值,如果不存在,则插入一条 ...

最新文章

  1. 【Visual C++】游戏开发笔记十三 游戏输入消息处理(二) 鼠标消息处理
  2. 三、垃圾收集之判断对象是否存活
  3. 2017.0322.数字电路与系统-触发器
  4. MATLAB-矩阵相关计算(1)
  5. MYSQL: MERGE引擎实现多分表的联合
  6. linux内置变量大全,Linux进阶之bash编程四(内置变量)
  7. linux开放端口_Linux系统通过firewall限制或开放IP及端口 - 北方客888
  8. mongo执行逻辑表达式_MongoDB 高级查询
  9. Swagger在header中添加token
  10. MagicRecord For IOS 简介
  11. 阿里云服务器和mysql的原理_mysql 数据库同步原理
  12. steam夏日促销悄然开始,用Python爬取排行榜上的游戏打折信息
  13. Nginx使用教程(八):使用Nginx缓存之Memcached缓存
  14. 深度学习知识体系总结(2021版)开放下载了!
  15. 实习踩坑之路:Date、LocalDate和LocalDateTime的区别
  16. java 调用oracle函数_java – 用Spring的SimpleJdbcCall来调用Oracle函数
  17. Flash遮罩动画之画轴
  18. 卫星控制类操作系统VAX/VMS简介
  19. 回眸2020,展望2021
  20. 共享洗车机无人值守是怎样运营的?

热门文章

  1. C++ 笔记(33)— C/C++ 程序员常见面试试题深入剖析
  2. 安装 sklearn 报错 ImportError: cannot import name Type
  3. openpyxl.utils.exceptions.IllegalCharacterError错误
  4. 传统编译器与神经网络编译器
  5. LED液晶与OLED:电视显示技术比较
  6. 如何为应用选择最佳的FPGA(下)
  7. CUDA运行时 Runtime(四)
  8. ADAS摄像头图像环视拼接算法
  9. 大数据调度平台Airflow(一):什么是Airflow
  10. Android 10 新增的功能