update 改写 merge into
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);
update 改写 merge into的更多相关文章
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用   引自http://www.blogjava.net/TiGERTiAN/archive/2008/10/25/236519.html
		Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object ... 
- hibernate的各种保存方式的区别 (save,persist,update,saveOrUpdte,merge,flush,lock)等
		hibernate的保存hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别:一.预备知识:在所有之前,说明一下,对于hibernate,它的对象有三种状态,t ... 
- Hibernate各保存方法之间的差 (save,persist,update,saveOrUpdte,merge,flush,lock)等一下
		hibernate保存 hibernate要保存的目的是提供一个方法,多.它们之间有许多不同之处,点击此处详细说明.使得差: 一.预赛: 在所有.阐释.供hibernate,,transient.p ... 
- Hibernate update 和 merge 、saveOrUpdate的区别
		this.getSession().update(obj); this.getSession().merge(obj); this.getSession().saveOrUpdate(obj); 1. ... 
- Hibernate三种状态的区分,以及save,update,saveOrUpdate,merge等的使用
		Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached).处于持久态的对象也称为PO(Persistence Object ... 
- 【转】NHIBERNATE的各种保存方式的区别 (SAVE,PERSIST,UPDATE,SAVEORUPDTE,MERGE,FLUSH,LOCK)
		前言 今天学学习NH这个框架,在新增对象的时候,看见大神用了persist而没有用Save,心中比较疑惑,查阅资料的时候,发现这篇写的非常不错,转载供大家参考. hibernate的保存hiberna ... 
- hibernate的各种保存方式的区别 (save,persist,update,saveOrUpdte,merge,flush,lock)
		hibernate的保存hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别:一.预备知识:在所有之前,说明一下,对于hibernate,它的对象有三种状态,t ... 
- Oracle doesn't have on duplicate key update Use MERGE instead:
		Oracle doesn't have on duplicate key update Use MERGE instead: MERGE INTO my_table trg USING (SELECT ... 
- hibernate的update、merge和saveOrUpdate的区别(转)
		1.首先 saveOrUpdate返回void 也就是什么都不返回 而merge会返回一个对象 2.其次 saveOrUpdate的做法是:自动判断该对象是否曾经持久化过,如果曾持久化过则使用upda ... 
随机推荐
- iOS上获得MAC地址
			很多时候我们都需要唯一来确定一台设备,苹果设备本来有个UDID号,可以实现这个目的.在iOS5.0以前,还有一个uniqueIdentifier的API用来获得这个number.不过iOS5之后,这个 ... 
- 【HDOJ】1462 Word Crosses
			字符串水题,这么做可能比较巧妙. /* 1462 */ #include <iostream> #include <string> #include <map> # ... 
- 更换手机号或者更换手机后QQ设备锁的设置问题
			更换手机号 一步到位,更改密保手机号,OK了 更换手机 老卡插入 登录QQ,OK了 更换手机号和手机 老卡插入新手机 登录QQ 新卡插入新手机 更改密保手机号,OK了 
- BZOJ_3527_[ZJOI2014]_力_(FFT+卷积)
			描述 题面: http://wenku.baidu.com/link?url=D2ORnA9xjgSxa2GlYLB7gGiYgBcXsy-Aw0kVYTjTE-iYhH1s7h8xXGmnaMwl3 ... 
- BZOJ_1607_ [Usaco2008_Dec]_Patting_Heads_轻拍牛头_(筛数)
			描述 http://www.lydsy.com/JudgeOnline/problem.php?id=1607 给出一组n个数,求每个数能被多少个其他的数整除. 分析 暴力一点的做法就是每个数去筛它的 ... 
- 【转】Xcode重构功能怎么用我全告诉你
			原文网址:http://www.cocoachina.com/ios/20160127/15097.html 你会经常需要重构你的代码,让它有更好的结构,可读性或者提高可维护性.Xcode作为IDE其 ... 
- Ubuntu 14.04 SSH + 远程登录xrdp
			1. 安装ssh 打开"终端窗口",输入"sudo apt-get install openssh-server"-->回车-->输入"y ... 
- [codevs3296]有序数组合并
			题目描述 Description 合并两个有序数组A和B,使得结果依然有序. 进阶:合并两个有序数组A和B,假设A有n个数,B有m个数,A数组后面还有m个空余空间,需要将结果保存在A中. 请使用O(n ... 
- Docker系列(四)Dockerfile
			基本语法 使用 #来注释 FROM 指令告诉Docker使用哪个镜像作为基础 接着是维护者信息 RUN 开头的指令会在创建中运行,比如安装软件包 FROM 格式: FROM<image>或 ... 
- Kooboo 加Search功能 必须先ReBuild Index Data
			加Search功能 有几个要点 1. 需要在Kooboo 必须先 ReBuild Index Data 2. 需要在要搜索的page中启用搜索索引 搜索的代码 @using K ... 
