oracle并行parallel update两张表_Oracle并行更新的两种方式(merge/update内联视图)
对于Oracle的两表联合更新的场景(有A、B两表,以A.id=B.id关联,根据B表中的记录更新A表中的相应字段),一般有update内联视图和merge两种方式,下面举例介绍:
创建用例表:
create table test1(id number(10),name varchar2(20));
create table test2(id number(10),name varchar2(20));
测试数据:
begin
insert into test1 values(1,'A');
insert into test1 values(2,'B');
insert into test2 values(1,'C');
insert into test2 values(2,'D');
end;
merge方式:
merge into test1 using test2
on (test1.id = test2.id)
when matched then update
set test1.name = nvl2(test1.name,test2.name,test1.name);
merge方法是最简洁,效率最高的方式,在大数据量更新时优先使用这种方式。
update内联视图方式:
使用这种方式必须在test2.id上有主键(这里很好理解,必须保证每一个test1.id对应在test2里只有一条记录,如果test2中有多条对应的记录,怎么更新test1?),一般而言这种方式代价比merge方式稍高。
alter table test2 add constraint pk_test2 primary key(id); --/*+ BYPASS_UJVC */
update (select /*+ BYPASS_UJVC */a.id aid,a.name aname,b.id bid,b.name bname from test1 a,test2 b where a.id=b.id) t
set aname = nvl2(aname,bname,aname);
使用并行,加快大量数据更新:
merge /*+parallel(test1,4)*/ into test1 using test2
on (test1.id = test2.id)
when matched then update
set test1.name = nvl2(test1.name,test2.name,test1.name);
oracle并行parallel update两张表_Oracle并行更新的两种方式(merge/update内联视图)相关推荐
- Hive 两张表数据验证方案、两张大表如何进行数据验证以及剔除部分字段进行数据验证
最近的问题是,宽表在上线之前,需要在测试环境进行试跑,试跑结束后如何跟线上正式数据进行比对呢?简单记录一下设计方案. 1.小表数据验证 一些字段比较少的表进行数据验证的方案之前出过 Hive 数据模型 ...
- oracle并行parallel update两张表_Oracle与并行性 parallel
Oracle与并行性 并行化操作能力是巨型数据库(Very Large Database,简称VLDB)最重要的特性之一.带有多个CPU的数据库服务器,也被称作SMP,目前是大多数数据库服务器的标准配 ...
- oracle两张表数据匹配,Oracle-left join两表关联只取B表匹配到的第一条记录
背景: A表.B表两表关联,关联出来的结果里B表有不止一条,需求是只要B表结果中的某一条(按某字段排序) 经过百度,发现 row_number() over(partition by a order ...
- oracle横向合并两张表,SQL中将两个表合并成一个新表 SQL如何合并两个表并生成一个新表?...
sql把两个表合并成一个新表的语句应该怎么写SQL SERVER: select * into 表3 from ( select 字段列表1 from 表1 union all select 字段列表 ...
- oracle系统视图更新,Oracle内联视图更新遇到的问题
遇到一个批量更新的需求,我打算用内联视图更新+where in list的技巧处理. 遇到一个批量更新的需求,我打算用内联视图更新+where in list的技巧处理. UPDATE ( SELEC ...
- oracle:一个update修改两张表
需求:用一个update语句修改两张表? 思路:用触发器来解决 触发器代码: 表a:table_a,表b:table_b,其中表b里面有表a的id,这个触发器意思是当修改表a的最后修改人:table_ ...
- MySQL和Oracle中如何update一张表中的字段赋值给另一张表的字段
MySQL 中实现将 一张表table1 中的字段name 等于table2 中的字段 name 通过相同字段no相连,实现如下: update table1 a1,table2 a2 set a1. ...
- oracle两张表 比较好,比较Oracle两张表的数据是否一样
比较Oracle两张表的数据是否一样 爱搞机 2008-10-21 11:00 在某些情况下,我们会需要比较两张表的数据是否一样. 假设有两张表A与表B他的字段相同,但是当中的数据可能不同,而且有些字 ...
- 在同一个workprocess里对两张表分别使用online update和update function module update
Created by Jerry Wang, last modified on Jul 22, 2014 有两张表: 用一个report测试,表1是直接online update,表2在update ...
最新文章
- runnable和handler联合实现计时循环
- java里css查找快捷键_CSS入门2—元素快捷键
- Spring Validation验证框架参数验证 @Validated 和 @Valid 的区别
- JSONP解决跨域及ajax同步问题
- 给孩子一束安全的光 明基WiT MindDuo亲子共读灯首发评测
- 对编码通俗易懂的介绍
- 【干货】2021年视频号商业化产品能力介绍:招商、推广、变现-腾讯.pdf(附下载链接)...
- 刚刚,贺建奎回应一切:如果是我孩子,我会第一个去试验
- Android--UI布局
- java switch枚举类,使用枚举类enum代替switch
- 苹果电风扇软件Macs Fan Control Pro安装教程
- ASP.NET Web Pages:WebGrid 帮助器
- 最详细的世界集成电路发展历史足迹
- Kindle4rss中文rss资源推荐~
- Win10+Ubuntu双系统修复Ubuntu系统引导
- ChAMP 差异甲基化分析
- [TODO]高维空间求近似最近邻
- HarmonyOS:ListContainer实现表格
- 《Java并发编程的艺术》——线程(笔记)
- 2022年6月大学英语六级翻译
热门文章
- 什么是布隆过滤器?如何解决高并发缓存穿透问题?
- 使用自动化插件release来管理maven项目的版本发布
- 每个软件开发人员都应该精通的10个基本工具
- “三板斧”式文化价值体系互助协作,打通企业全流程管理模式
- 生态伙伴 | Tita入驻飞书啦,从目标制定到项目执行,帮你一站式解决!
- 从DDD看企业级问题解决方案框架
- OKR让伟大的企业愿景成为可能
- 辗转相除法是求两个数的最大公约数的方法。
- 自己试验写的一个文本转语音的一个小程序
- ios 证书更新需要重新发布么_福利站证书更新,自己有空余时间一定要学会自己用电脑签名!...