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 ...
 
随机推荐
- powerdesigner简单使用
			
---- 1) --- 新建流程图:新建模型,选择activity的那个就可以了. ----
 - ArchLinux安装开源VMware Tools
			
首先按照传统的Linux下安装VMware Tools的方法[1]]出现了很多的错误,安装过程完全没有办法进行下去.我在ArchLinux Wiki中看到这样一句说:VMware Tools for ...
 - 知识面 z
			
http://blog.csdn.net/sxhelijian/article/details/23163683 有了较宽和知识面,面对复试中不知道的问题,回答可以是:“这个问题,直接回答我没有把握, ...
 - Unity3D Mathf函数
			
Mathf.Abs绝对值 计算并返回指定参数 f 绝对值. Mathf.Acos反余弦 static function Acos (f : float) : float 以弧度为单位计算并返回参数 f ...
 - [Codechef October Challenge 2014]刷漆
			
问题描述 Czy做完了所有的回答出了所有的询问,结果是,他因为脑力消耗过大而变得更虚了:).帮助Czy恢复身材的艰巨任务落到了你的肩上. 正巧,你的花园里有一个由N块排成一条直线的木板组成的栅栏,木板 ...
 - 微软Azure的多媒体编码服务示例
			
这篇文章是介绍 Azure 媒体服务编程系列之一.以前的主题是如何: 获得媒体处理器. 为服务器上的媒体内容,可以对内容与大量的媒体编码和格式使用 Azure Media 编码器进行编码.您还可以使用 ...
 - vlookup使用案例
			
http://www.360doc.com/content/13/1119/20/9842991_330586745.shtml
 - HW3.4
			
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
 - CF_402C  Searching for Graph 乱搞题
			
题目链接:http://codeforces.com/problemset/problem/402/C /**算法分析: 乱搞题,不明白题目想考什么 */ #include<bits/stdc+ ...
 - JVM 进行线程同步背后的原理
			
前言 所有的 Java 程序都会被翻译为包含字节码的 class 文件,字节码是 JVM 的机器语言.这篇文章将阐述 JVM 是如何处理线程同步以及相关的字节码. 线程和共享数据 Java 的一个优点 ...