【问题】现在有两个千万级别的结构相同数据不同数据表T_SMS_PHONENO(目的表),T_SMS_PHONENO2(源表),根据源表数据更新目的表的数据。

【分析】根据经验,更新方法一般有以下几种:

1、直接update。

update T_SMS_PHONENO T Set    T.NAME=(select NAME from T_SMS_PHONENO2 where PHONENO=T.PHONENO)

2、采用分条更新。根据记录ID逐条更新。

open cur is select phoneno,name from T_SMS_PHONENO;

loop

fetch cur in v_pn,v_name;

update T_SMS_PHONENO T set T.NAME=v_name where v_pn=T.phoneno;

exit when cur% notfound;

end loop

3、采用分批次更新。将数据按表分区字段或其他字段依次进行分批次更新。

open cur is select region from T_SMS_PHONENO group by region;

loop

fetch cur in v_region;

update T_SMS_PHONENO T set T.NAME=(select name from T_SMS_PHONENO2 where phoneno=T.Phoneno) where T.region=v_region;

exit when cur% notfound;

end loop

4、虚拟一张表,唯一关联后进行更新。

update (select  T.name,T2.name name2 from T_SMS_PHONENO T,T_SMS_PHONENO2 T2 where T.phoneno=T2.phoneno) set name=name2;

5、Create 一张新表后进行更新。

create table TEMP_SMS_PHONENO as select * from T_SMS_PHONENO T,T_SMS_PHONENO2 T2 where T.phoneno=T2.phoneno;

生成新表,然后重命名表为T_SMS_PHONENO

【结论】

1、对于大表的更新如果采用直接update语句,则会直接产生大量回滚,并且时间很长,出现假死现象。

2、1小时。

3、30分钟。

4、2分钟。

5、30秒,因为不产生redo,undo动作,insert语句会很快。

如果存在唯一性关联字段的话,则采用第四种方法更新,是很快的,如果不存在唯一关联字段则需要分批次更新,或者create 个新表。

oracle将一个表数据更新时间,Oracle批量更新,将一个表的数据批量更新另一表相关推荐

  1. oracle添加表空间时间,Oracle基于表空间的时间点恢复

    1.测试环境 03:57:50 SQL> conn scott/tiger Connected. 03:57:57 SQL> 03:59:43 SQL> select * from ...

  2. oracle spool文件名+系统时间,Oracle Spool详解

    转自:http://blog.sina.com.cn/s/blog_6bccf0360101hzsh.html 1.spool的作用是什么? spool的作用可以用一句话来描述:在sqlplus中用来 ...

  3. oracle sql 获取当前时间,Oracle 在SQL语句中如何获取系统当前时间并进行操作

    ### 前言 Oracle中如何获取系统当前时间进行语句的筛选是SQL语句的常见功能 获取系统当前时间 date类型的: select sysdate from dual; char类型的: sele ...

  4. excel实现套用模板批量打印_#数据清洗#Excel数据批量填入Word模板

    问题描述:把Excel中数据批量填入Word模板中的特定位置 今天小伙伴,遇到一个问题,他有一份一千多个不同城市的客户资料,同时,有一份word文档,他需要把Excel中的数据一条条填写到word中对 ...

  5. oracle查对象创建时间,oracle:查询某个时间之后,指定用户,指定对象类型,并创建的表的个数...

    SQL> select COUNT(*) from dba_objects where created< to_date('17-01-14','dd-mm-y y')  AND owne ...

  6. oracle取每日固定时间,Oracle查询每天固定时间段的数据

    select * from GPS_LOG t where to_char(t.gps_time,'hh24:mm:ss')>='15:30:00'and to_char(t.gps_time, ...

  7. oracle查询空的时间,ORACLE 查看用户密码修改时间

    前几天在给客户培训过程中,有一客户问到能否查看某一用户的密码修改时间,这样可以减少很多不必要的纠纷,大致研究了一下. 1.当前数据库版本为 SQL> select * from v$versio ...

  8. oracle 回退到某个时间,oracle 闪回技术

    基本闪回查询 SYS@VDEDU> select * from scott.dept as of timestamp to_timestamp ('2018-07-26 13:20:00','y ...

  9. oracle归档日志保留时间,Oracle 11g Data Guard 备库归档日志清理脚本(保留一周归档)...

    #!/bin/sh #clean archived log #author jiadingyi #version 1.0 2015/11/04 #设置数据库环境变量 TMP=/tmp export T ...

最新文章

  1. Spring Security 实战干货: RBAC权限控制概念的理解
  2. python 二维list取列
  3. 教你如何谷歌浏览器免费打电话
  4. Asp.net中实现同一用户名同时登陆,注销先前用户(转)
  5. 一年级学情分析计算机,小学一年级语文学情分析范文
  6. docker 删除映像_如何在Docker中删除映像和容器
  7. go init函数_面试录 Go语言篇 内存模型
  8. BZOJ2388: 旅行规划
  9. DragonBones快速入门指南
  10. Direct3D光与材质的颜色值
  11. 18. MySQL 命令
  12. dmg镜像如何写入u盘_最全macOS官方全家桶原版系统镜像
  13. Gephi教程【1】安装
  14. mysql有热备吗_mysql备份方法(热备)
  15. 视频分辨率QCIF、CIF、2CIF、4CIF,D1~D5
  16. DNS分类与区别-权威DNS、递归DNS、转发DNS
  17. 烤仔的朋友们丨如梦如幻的 2020 上半场
  18. VTN系列多通道振弦、温度、模拟传感信号系列数据采集仪
  19. 国内的服务器的优势就是,国产芯片服务器的优势是什么
  20. 电子技术——伪NMOS逻辑电路

热门文章

  1. Java中的return this
  2. Java面试——RabbitMQ系列总结
  3. 两个变量实现查找坏环c语言,C/C++编程笔记:C语言编程知识要点总结!大一C语言知识点(全)...
  4. oracle server process,Oracle体系结构及备份(四)server-process
  5. android资源透明背景,@谷歌android帝 这是你想要的,全局透明背景教程,两种方法...
  6. wordpress url index.php,WordPress对URL的路由解析过程详解
  7. java生成大素数_用BigInteger实现大素数生成算法
  8. 新闻资讯java开发_新闻资讯app开发的功能与意义
  9. mysql 小雨_Mysql数据库
  10. java与平台无关的原因