linux update语句,关于Update语句的调整(5-1)
调整方法二:建立临时表+Merge
(1)
1.调整方法二:建立临时表+Merge
通过建立临时表保存中间结果并结合merge语句的方法对语句进行调整。
背景知识简介
l临时表简介
数据库中的所有会话均可以访问临时表,但只有插入数据到临时表中的会话才能看到本身插入的数据。可以把临时表指定为事务相关(默认)或者是会话相关:
ON COMMIT DELETE ROWS:指定临时表是事务相关的,Oracle在每次提交后截断表。
ON COMMIT PRESERVE ROWS:指定临时表是会话相关的,Oracle在会话中止后截断表。
通过使用Oracle的临时表后可以并行的对数据进行处理,有效的提高了数据处理的速度。
下面是创建临时表的例子
CREATE GLOBAL TEMPORARY TABLE TEMP_TEST
AS
SELECT *FROM DBA_OBJECTS
WHERE 1 = 2
/
CREATE INDEX IDX_OBJECT_ID ON TEMP_TEST(OBJECT_ID)
/
在临时表上插入数据比在普通表上插入数据要快得多:
SQL> SET TIMING ON
SQL>
SQL> DROP TABLE TEMP_TEST_1
2/
表已丢弃。
已用时间:00: 00: 00.00
SQL> CREATE GLOBAL TEMPORARY TABLE TEMP_TEST_1
2AS
3SELECT *FROM DBA_OBJECTS
4WHERE 1=2
5/
表已创建。
已用时间:00: 00: 00.01
SQL>
SQL> DROP TABLE TEMP_TEST_2
2/
表已丢弃。
已用时间:00: 00: 00.03
SQL> CREATE TABLE TEMP_TEST_2
2AS
3SELECT *FROM DBA_OBJECTS
4WHERE 1=2
5/
表已创建。
已用时间:00: 00: 00.02
SQL>
SQL> INSERT INTO TEMP_TEST_1 SELECT * FROM DBA_OBJECTS
2/
已创建47622行。
已用时间:00: 00: 01.04
SQL> INSERT INTO TEMP_TEST_2 SELECT * FROM DBA_OBJECTS
2/
已创建47622行。
已用时间:00: 00: 04.07
SQL>
我们看看,47622行记录插入临时表只需要01.04,而插入普通表则需要04.07。
lMerge语句简介
Merge语句的基本语法:
MERGE INTO .TABLE1
USING .TABLE2
ON (TABLE1.= TABLE2.)
WHEN MATCHED THEN
WHEN NOT MATCHED THEN ;
Merge把一张表中的数据插入到另外一张表中或者更新对应的记录,插入与更新由ON子句决定。
下面是使用Merge语句的一个例子:
SQL>
SQL> drop table t3
2/
表已丢弃。
已用时间:00: 00: 00.00
SQL> create table t3 as select * from dba_objects where rownum <= 30
0
2/
表已创建。
已用时间:00: 00: 00.02
SQL> drop table t4
2/
表已丢弃。
已用时间:00: 00: 00.00
SQL> create table t4 as select * from dba_objects
2/
表已创建。
已用时间:00: 00: 00.07
SQL> create index idx_t3_id on t3(object_id)
2/
索引已创建。
已用时间:00: 00: 00.01
SQL> create index idx_t4_id on t4(object_id)
2/
索引已创建。
已用时间:00: 00: 00.05
SQL> merge into t3
2using t4
3on (t3.object_id = t4.object_id)
4when matched then update set t3.object_name = t4.object_name
5when not matched then insert (t3.object_id,t3.object_name)
6values (t4.object_id,t4.object_name)
7/
47628行已合并。
已用时间:00: 00: 06.00SQL>
linux update语句,关于Update语句的调整(5-1)相关推荐
- SQL 更新语句:Update ... set ... from ...
最近在做报表,作为数据库只会一个一个来update的我来说就有点艰难了. 今天想来说一下更新多个字段的语句: update 表名b set 字段1=a.字段a, 字段2=a.字段b, 字段3=a.字 ...
- mysql update用法_mysql update语句的用法详解
首先,单表的UPDATE语句: UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] ...
- Mybatis执行update,insert等语句返回的不是受影响的行数
Mybatis执行update,insert等语句返回的不是受影响的行数 在我们日常开发中,使用Mybatis框架中,经常会根据update,或者其他操作的返回值判断执行是否成功. 如: 在执行以上语 ...
- java中update怎么写,update语句
手机评站网今天精心准备的是<update语句>,下面是详解! SQL的update语句怎么写? 当a列的值为f时,对x表的b,c,d,e列同时更新数据... 当a列的值为f时,对x表的b, ...
- mysql的更新语句_IT大叔详谈mysql中update语句和delete语句及应用
学习是一件枯燥的事,你要牺牲自己的业余时间,你要忍受孤独,坚持下来了你就胜利了,学习是一个过程,只要循序渐进,每天进步一点点,只有这样你才能提高进而成功.今天老韩来讲一讲mysql中的update语句 ...
- oracle+执行变量语句,ORACLE sql 语句的执行过程(SQL性能调整)
第1章 SQL语句处理的过程 在调整之前我们需要了解一些背景知识,只有知道这些背景知识,我们才能更好的去调整sql语句. 本节介绍了SQL语句处理的基本过程,主要包括: · 查询语句处理 · DML语 ...
- linux脚本多分支if语句,shell脚本基础应用(二)if单分支,双分支,多分支语句...
前言:为了使shell脚本具有一定的"判断"能力,根据不同的条件来完成不同的管理任务.使脚本具有一定的"智能". 一.条件测试操作 文件测试常见操作: -d:: ...
- linux 中的if else语句
linux 中的if else语句 在shell中.if语句有三种形式,如下: 第一种: if condition then command else command 在这种形式中,其中和c语言不 ...
- Linux Shell脚本多循环语句练习题
Linux Shell脚本多循环语句练习题 99乘法表 矩形 正直角三角形 反直角三角形 倒直角三角形 等腰三角形 倒等腰三角形 菱形 平行四边形 直角梯形 等腰梯形 99乘法表 #!/bin/bas ...
最新文章
- Xtreme.Toolkit.Pro编译简单教程
- XXX管理平台系统——项目教训
- HTML5新特性介绍
- linux 下 nginx phpcgi 的安装及配置
- 模拟Spring如何在WEB中运行
- Wtm Blazor来了!
- python for循环连续输入五个成绩判断等级_Python基础(1)——输入输出/循环/条件判断/基本数据类型...
- 带有示例的Python date strftime()方法
- Hadoop学习笔记(一)从官网下载安装包
- python官网安装程序的功能和特点_python介绍与安装(一)
- (C++)浅谈多态基类析构函数声明为虚函数
- 2014025675 《嵌入式系统程序设计》第七周学习总结
- 两行命令实现 ubuntu 上自动更新 Vscode
- MySQL常用命令用法总结
- 小博老师精选Java十大CMS ——建站神器
- freemarker,自定义指令
- 制订项目进度计划的讨论
- 部落优势服务器,魔兽怀旧服联盟优势服有哪些?怀旧服联盟优势服务器一览
- java实现心形图案|桃心_java实现心形图案
- 针式PKM,不是简单的“文档管理器”
热门文章
- 随机过程及其稳态stability
- markov chain, MRP MDP
- java可视化压缩_web可视化技术发展(1/6)
- fanuc机器人与视觉通信_要说工厂干起活来:工业机器人和数控机床才是真正的一对!...
- 墙面有几种装修方法_新房装修除甲醛 用这几种方法就足够
- 堆栈图解CSAPP Bomb Lab实验解析
- 下载 沙耶之歌Android_沙耶之歌安卓版apk-沙耶之歌下载手机版v1.2-飘荡下载
- 几道题帮你搞定数据选择器
- JBOSS内存溢出处理
- (027) Linux之shell分支if语句