oracle update 改为 merge
有个同学问过不看plan能不能优化,有些语句确实不需要看plan,今天就有个很简单的案例
比如下面这个:
网友说更新时间太长,需要1个小时
- UPDATE ia
- SET ia.col_time =
- (SELECT MAX(substr(numtodsinterval(iaf.col_time, 'second'), 12, 8))
- FROM iaf
- WHERE ia.id = iaf.code
- GROUP BY ia.id)
- WHERE EXISTS (SELECT 1
- FROM iaf
- WHERE ia.id = iaf.code
- 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语句,改这种语句用不了几分钟
- MERGE INTO ia
- USING (SELECT iaf.code,
- MAX(substr(numtodsinterval(iaf.col_time, 'second'), 12, 8)) col_time
- FROM iaf
- WHERE ia.id = iaf.code) iaf
- USING (ia.id = iaf.code)
- WHEN MATCHED THEN
- 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相关推荐
- oracle update并行,Oracle update 优化方式,tuning update!
在批量更新中,merge语句性能是最好的,因为merge可以多快读,而且可以启用并行,merge语句比一般update语句快,另外还有一种就是根据rowid来更新,这几种方法更新各有好处,首先使用me ...
- Merge用法:Oracle 10g中对Merge语句的增强
网址: http://www.eygle.com/digest/2009/02/mergeoracle_10gmerge.html 在Oracle 10g之前,merge语句支持匹配更新和不匹配插入 ...
- ORACLE 10 g的 merge into 用法
查看原文:http://www.ibloger.net/article/244.html 在Oracle 10g之前,merge语句支持匹配更新和不匹配插入2种简单的用法,在10g中Oracle对me ...
- Oracle数据库之oracle update set select from 关联更新
本文主要向大家介绍了Oracle数据库之oracle update set select from 关联更新,通过具体的内容向大家展现,希望对大家学习Oracle数据库有所帮助. 工作中有个需求,现在 ...
- oracle是否支持gb18030,将oracle字符集改成GB18030
将oracle字符集改成GB18030 (2011-06-29 14:16:05) 转载▼ 标签: 数据库 字符集 oracle gb18030 ora-12712 it 1.以管理员身份进入数据库 ...
- oracle update错误后回退
oracle update,delete并commit误操作后,利用闪回方法 flashback还原上个时间点的数据 Oracle Flashback 查询时间节点 select id, name, ...
- oracle有的表带$,Oracle Update
在表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.象sql server提供了update的from 子句,可以将要更新的表与其它的数据源连接起来.虽然只能对一个表进行更新,但是通 ...
- oracle update from多表性能优化一例
这几天测试java内存数据库,和oracle比较时发下一个update from语句很慢,如下: update business_newset fare1_balance_ratio = (selec ...
- oracle update 数据库恢复,ORACLE update 操作内部原理
对于oracle的update操作,在数据块中具体是如何出来,是直接更新原来值,还是通过插入新值修改指针的方法实现.下面通过证明: 模拟表插入数据 SQL> create table t_xif ...
最新文章
- 【Ubuntu】VirtualBox显卡驱动VBoxVGA、VBoxSVGA、VMSVGA +3D对播放视频的影响
- LinearAlgebra_3
- 成功解决AttributeError: module 'tensorflow.python.training.training' has no attribute 'SummaryWriter'
- 自我辩证之计划是否该坚持?
- ASP.NET - MVC框架及搭建教程
- 关于jstl在tomcat5和tomcat6的部署
- springboot2 多线程写入数据_解决SpringBoot项目使用多线程处理任务时无法通过@Autowired注入bean问题...
- 光耦在短距离通信中的应用
- DBSCAN聚类(code)
- 在SpringMVC中使用@RequestBody和@ResponseBody注解处理json时,报出HTTP Status 415的解决方案
- python获取图片大小_Python实现获取本地及远程图片大小的方法示例_python_脚本中心...
- 7.1 认识Access报表
- 亲密接触Redis-第一天
- Android仿iOS左右滑动开关控件(Android4.0以上适用)
- Endnote教程:如何快速搞定论文里的参考文献格式?
- CSP小白起步-20131201
- c语言 按键切换显示屏,51单片机lcd1602按键切屏
- 教你自制一款简单的助听器
- BQ40Z80 SMBUS通讯不上
- FFMPEG采集摄像头图像SDL渲染+MP4格式视频编码