转载自:http://blog.csdn.net/onemetre/article/details/6525348

【问题】现在有两个千万级别的结构相同数据不同数据表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批量更新】根据一个大表批量更新另一大表的方法比较相关推荐

  1. Python+Excel系列: 案例三:批量重命名一个工作薄中的所有工作表、批量重命名一个工作簿中的部分工作表

    文章目录 批量重命名一个工作薄中的所有工作表 批量重命名一个工作簿中的部分工作表 批量重命名一个工作薄中的所有工作表 例:把table文件夹下一个工作簿中所有工作表名中的"销售"二 ...

  2. ORACLE数据库,数据量大,转移数据到备份表语句

    INSERT INTO TEMP_BUS_TRAVEL_INFO ( SELECT * FROM BUS_TRAVEL_INFO t where to_Char( start_time,'YYYYMM ...

  3. 大数据批量下载文件 代码

    大数据批量下载文件 代码 # # 大数据批量下载文件 from multiprocessing import Process import os import pandas as pd import ...

  4. Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现

    Unity 游戏实例开发集合 之 CompoundBigWatermelon (简单合成一个大西瓜) 休闲小游戏快速实现 目录 Unity 游戏实例开发集合 之 CompoundBigWatermel ...

  5. 增大mysql修改表空间_扩充数据库表空间

    ALTER TABLESPACE ADD DATAFILE , [REUSE] NEXT MAXSIZE <>中是你要填的内容,有|是选其一. 如:增加文件是d:\dbfs\mydatab ...

  6. 华为手机android版本升级失败怎么办,华为手机系统更新好吗 华为手机系统更新方法...

    大家都知道智能手机使用长了以后,它就会出现一些漏洞,这样会大大影响人们使用智能手机的安全性以及操作的流畅度.因此现在的智能手机生产商都会定期为自己的智能手机更新以及优化系统,其中华为也不例外也会定期为 ...

  7. Windows 11首次重大更新!如何快速升级Win11 22H2?(附四种升级方法)

    Windows 11 将采用年度功能更新方式,也就是每年的下半年发布一个大版本功能更新,本文为大家带来了详细的升级方法,需要的朋友一起看看吧 约一年前的 10 月 5 日,微软正式推出了 Window ...

  8. 《Oracle SQL疑难解析》——1.6 批量地从一个表中复制数据到另一个表

    本节书摘来自异步社区出版社<Oracle SQL疑难解析>一书中的第1章,第1.6节,作者: [美]Grant Allen , Bob Bryla , Darl Kuhn,更多章节内容可以 ...

  9. Oracle数据库update语句用法,多表批量更新对应的字段值

    日常工作经常会遇到参照某个表格,更新主表对应字段的值 一般可以用excel的VLOOKup函数进行查找匹配,但是这种方法需要将表从数据库中导出,更新完了之后再导回数据库中. 我们用update语句可以 ...

最新文章

  1. python创建列向量_关于Numpy中的行向量和列向量详解
  2. Nginx流量拦截算法
  3. 从源代码的角度分析--在BaseAdapter调用notifyDataSetChanged()之后发生了什么
  4. CSDN修改博客皮肤模板
  5. 【讲解】1030 Travel Plan (30 分)【DFS】_41行代码Ac
  6. 安卓虚拟机与Hyper-V冲突
  7. 2.Idea分支的merge
  8. C语言过时了吗?不,我们需要的是一份个人成长
  9. 多选框中的选中的值和未选中值的获取
  10. dedecms 封面模板和列表模板有什么不同
  11. docker限制容器日志大小
  12. 什么是ISO9000质量管理体系认证以及认证流程
  13. 模糊C均值聚类 C++代码
  14. AI在医疗领域的应用 | “AI+传统行业”全盘点
  15. 《信息化项目文档模板十——系统用户操作手册模板》
  16. 跟随鼠标移动-demo
  17. std::weak_ptr(分析、仿写)
  18. R语言学习笔记(四)--数据结构
  19. 微信分享到朋友圈的链接,内容打开正常,但在微信中分享时封面缩略图图像和标题显示不出来?
  20. mysql分区为什么提高性能_通过分区(Partition)提升MySQL性能

热门文章

  1. python高阶函数——sorted排序算法
  2. linux网卡eth1如何修改为eth0
  3. [面试专题]Vue.js 2.0 独立构建和运行时构建的区别
  4. 设计模式【单例模式】
  5. 对信号函数sigaction的sa_mask的学习
  6. Android入门(十一)SQLite CURD
  7. 别说你不知IE9正式版浏览器小技巧9则
  8. 数据源改变后,BarChart组件的运动效果.
  9. 谷歌详述 Zoom 客户端和MMR 服务器中的两个0day
  10. 追风猎洞只能喝西北风吗?