有个同学问过不看plan能不能优化,有些语句确实不需要看plan,今天就有个很简单的案例

比如下面这个:

网友说更新时间太长,需要1个小时

[sql] view plaincopyprint?
  1. UPDATE ia
  2. SET ia.col_time =
  3. (SELECT MAX(substr(numtodsinterval(iaf.col_time, 'second'), 12, 8))
  4. FROM iaf
  5. WHERE ia.id = iaf.code
  6. GROUP BY ia.id)
  7. WHERE EXISTS (SELECT 1
  8. FROM iaf
  9. WHERE ia.id = iaf.code
  10. GROUP BY ia.id);
UPDATE iaSET ia.col_time =(SELECT MAX(substr(numtodsinterval(iaf.col_time, 'second'), 12, 8))FROM iafWHERE ia.id = iaf.codeGROUP BY ia.id)WHERE EXISTS (SELECT 1FROM iafWHERE ia.id = iaf.codeGROUP BY ia.id);

象这种关联更新一般都可以改为merge语句,改这种语句用不了几分钟

[sql] view plaincopyprint?
  1. MERGE INTO ia
  2. USING (SELECT iaf.code,
  3. MAX(substr(numtodsinterval(iaf.col_time, 'second'), 12, 8)) col_time
  4. FROM iaf
  5. WHERE ia.id = iaf.code) iaf
  6. USING (ia.id = iaf.code)
  7. WHEN MATCHED THEN
  8. UPDATE SET ia.col_time = iaf.col_time;
MERGE INTO ia
USING (SELECT iaf.code,MAX(substr(numtodsinterval(iaf.col_time, 'second'), 12, 8)) col_timeFROM iafWHERE ia.id = iaf.code) iaf
USING (ia.id = iaf.code)
WHEN MATCHED THENUPDATE SET ia.col_time = iaf.col_time;

单单对比这两个语句的写法就可以看到:改为merge后对于iaf的访问减少了一次。

http://blog.csdn.net/jgmydsai/article/details/37697749

转载于:https://www.cnblogs.com/liuzhuqing/p/7480245.html

oracle update 改为 merge相关推荐

  1. oracle update并行,Oracle update 优化方式,tuning update!

    在批量更新中,merge语句性能是最好的,因为merge可以多快读,而且可以启用并行,merge语句比一般update语句快,另外还有一种就是根据rowid来更新,这几种方法更新各有好处,首先使用me ...

  2. Merge用法:Oracle 10g中对Merge语句的增强

    网址:  http://www.eygle.com/digest/2009/02/mergeoracle_10gmerge.html 在Oracle 10g之前,merge语句支持匹配更新和不匹配插入 ...

  3. ORACLE 10 g的 merge into 用法

    查看原文:http://www.ibloger.net/article/244.html 在Oracle 10g之前,merge语句支持匹配更新和不匹配插入2种简单的用法,在10g中Oracle对me ...

  4. Oracle数据库之oracle update set select from 关联更新

    本文主要向大家介绍了Oracle数据库之oracle update set select from 关联更新,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 工作中有个需求,现在 ...

  5. oracle是否支持gb18030,将oracle字符集改成GB18030

    将oracle字符集改成GB18030 (2011-06-29 14:16:05) 转载▼ 标签: 数据库 字符集 oracle gb18030 ora-12712 it 1.以管理员身份进入数据库 ...

  6. oracle update错误后回退

    oracle update,delete并commit误操作后,利用闪回方法 flashback还原上个时间点的数据 Oracle Flashback 查询时间节点 select id, name, ...

  7. oracle有的表带$,Oracle Update

    在表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通 ...

  8. oracle update from多表性能优化一例

    这几天测试java内存数据库,和oracle比较时发下一个update from语句很慢,如下: update business_newset fare1_balance_ratio = (selec ...

  9. oracle update 数据库恢复,ORACLE update 操作内部原理

    对于oracle的update操作,在数据块中具体是如何出来,是直接更新原来值,还是通过插入新值修改指针的方法实现.下面通过证明: 模拟表插入数据 SQL> create table t_xif ...

最新文章

  1. 【Ubuntu】VirtualBox显卡驱动VBoxVGA、VBoxSVGA、VMSVGA +3D对播放视频的影响
  2. LinearAlgebra_3
  3. 成功解决AttributeError: module 'tensorflow.python.training.training' has no attribute 'SummaryWriter'
  4. 自我辩证之计划是否该坚持?
  5. ASP.NET - MVC框架及搭建教程
  6. 关于jstl在tomcat5和tomcat6的部署
  7. springboot2 多线程写入数据_解决SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean问题...
  8. 光耦在短距离通信中的应用
  9. DBSCAN聚类(code)
  10. 在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案
  11. python获取图片大小_Python实现获取本地及远程图片大小的方法示例_python_脚本中心...
  12. 7.1 认识Access报表
  13. 亲密接触Redis-第一天
  14. Android仿iOS左右滑动开关控件(Android4.0以上适用)
  15. Endnote教程:如何快速搞定论文里的参考文献格式?
  16. CSP小白起步-20131201
  17. c语言 按键切换显示屏,51单片机lcd1602按键切屏
  18. 教你自制一款简单的助听器
  19. BQ40Z80 SMBUS通讯不上
  20. FFMPEG采集摄像头图像SDL渲染+MP4格式视频编码

热门文章

  1. Android 显示原理简介
  2. kubernetes之五:资源管理
  3. LeetCode(1108)——IP 地址无效化(JavaScript)
  4. markdown中快速插入Emoji表情包语法速查表!!!
  5. 桌面 NAS 是什么
  6. 连续汗蒸一星期有什么好处?
  7. 渠道是创业企业与消费者或者用户建立联系的桥梁
  8. “三步走”助你完成领导者转变
  9. 创作优质的视频号作品四个方向
  10. 职场学会这三招,谁都想跟你交朋友