调整方法二:建立临时表+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)相关推荐

  1. SQL 更新语句:Update ... set ... from ...

    最近在做报表,作为数据库只会一个一个来update的我来说就有点艰难了. 今天想来说一下更新多个字段的语句: update 表名b  set 字段1=a.字段a, 字段2=a.字段b, 字段3=a.字 ...

  2. mysql update用法_mysql update语句的用法详解

    首先,单表的UPDATE语句: UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] ...

  3. Mybatis执行update,insert等语句返回的不是受影响的行数

    Mybatis执行update,insert等语句返回的不是受影响的行数 在我们日常开发中,使用Mybatis框架中,经常会根据update,或者其他操作的返回值判断执行是否成功. 如: 在执行以上语 ...

  4. java中update怎么写,update语句

    手机评站网今天精心准备的是<update语句>,下面是详解! SQL的update语句怎么写? 当a列的值为f时,对x表的b,c,d,e列同时更新数据... 当a列的值为f时,对x表的b, ...

  5. mysql的更新语句_IT大叔详谈mysql中update语句和delete语句及应用

    学习是一件枯燥的事,你要牺牲自己的业余时间,你要忍受孤独,坚持下来了你就胜利了,学习是一个过程,只要循序渐进,每天进步一点点,只有这样你才能提高进而成功.今天老韩来讲一讲mysql中的update语句 ...

  6. oracle+执行变量语句,ORACLE sql 语句的执行过程(SQL性能调整)

    第1章 SQL语句处理的过程 在调整之前我们需要了解一些背景知识,只有知道这些背景知识,我们才能更好的去调整sql语句. 本节介绍了SQL语句处理的基本过程,主要包括: · 查询语句处理 · DML语 ...

  7. linux脚本多分支if语句,shell脚本基础应用(二)if单分支,双分支,多分支语句...

    前言:为了使shell脚本具有一定的"判断"能力,根据不同的条件来完成不同的管理任务.使脚本具有一定的"智能". 一.条件测试操作 文件测试常见操作: -d:: ...

  8. linux 中的if else语句

    linux 中的if  else语句 在shell中.if语句有三种形式,如下: 第一种: if  condition then command else command 在这种形式中,其中和c语言不 ...

  9. Linux Shell脚本多循环语句练习题

    Linux Shell脚本多循环语句练习题 99乘法表 矩形 正直角三角形 反直角三角形 倒直角三角形 等腰三角形 倒等腰三角形 菱形 平行四边形 直角梯形 等腰梯形 99乘法表 #!/bin/bas ...

最新文章

  1. Xtreme.Toolkit.Pro编译简单教程
  2. XXX管理平台系统——项目教训
  3. HTML5新特性介绍
  4. linux 下 nginx phpcgi 的安装及配置
  5. 模拟Spring如何在WEB中运行
  6. Wtm Blazor来了!
  7. python for循环连续输入五个成绩判断等级_Python基础(1)——输入输出/循环/条件判断/基本数据类型...
  8. 带有示例的Python date strftime()方法
  9. Hadoop学习笔记(一)从官网下载安装包
  10. python官网安装程序的功能和特点_python介绍与安装(一)
  11. (C++)浅谈多态基类析构函数声明为虚函数
  12. 2014025675 《嵌入式系统程序设计》第七周学习总结
  13. 两行命令实现 ubuntu 上自动更新 Vscode
  14. MySQL常用命令用法总结
  15. 小博老师精选Java十大CMS ——建站神器
  16. freemarker,自定义指令
  17. 制订项目进度计划的讨论
  18. 部落优势服务器,魔兽怀旧服联盟优势服有哪些?怀旧服联盟优势服务器一览
  19. java实现心形图案|桃心_java实现心形图案
  20. 针式PKM,不是简单的“文档管理器”

热门文章

  1. 随机过程及其稳态stability
  2. markov chain, MRP MDP
  3. java可视化压缩_web可视化技术发展(1/6)
  4. fanuc机器人与视觉通信_要说工厂干起活来:工业机器人和数控机床才是真正的一对!...
  5. 墙面有几种装修方法_新房装修除甲醛 用这几种方法就足够
  6. 堆栈图解CSAPP Bomb Lab实验解析
  7. 下载 沙耶之歌Android_沙耶之歌安卓版apk-沙耶之歌下载手机版v1.2-飘荡下载
  8. 几道题帮你搞定数据选择器
  9. JBOSS内存溢出处理
  10. (027) Linux之shell分支if语句