Oracle的update语句优化研究

一、 update语句的语法与原理

1. 语法

单表:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值如:update t_join_situation set join_state='1'whereyear='2011'

更新年度为“2011”的数据的join_state字段为“1”。如果更新的字段加了索引,更新时会重建索引,更新效率会慢。

多表关联,并把一个表的字段值更新到另一个表中的字段去:

update 表a set a.字段1 = (select b.字段1 from 表b where a.字段2=b.字段2) where exists(select 1 from 表b where a.字段2=b.字段2)

oracle的更新语句不通MSSQL那么简单易写,就算写出来了,但执行时可能会报

这是由于set哪里的子查询查出了多行数据值,oracle规定一对一更新数据,所以提示出错。要解决这样必须保证查出来的值一一对应。

2. 原理

Update语句的原理是先根据where条件查到数据后,如果set中有子查询,则执行子查询把值查出来赋给更新的字段,执行更新。

如:update 表a set a.字段1 = (select b.字段1 from 表b where a.字段2=b.字段2) where exists(select 1 from 表b where a.字段2=b.字段2)。查表a的所有数据,循环每条数据,验证该条数据是否符合exists(select 1 from 表b where a.字段2=b.

字段2)条件,如果是则执行(select b.字段1 from 表b where a.字段2=b.字段2)查询,查到对应的值更新a.字段1中。关联表更新时一定要有exists(select 1 from 表

b where a.字段2=b.字段2)这样的条件,否则将表a的其他数据的字段1更新为

null值。

二、提高oracle更新效率的各种解决方案

1. 标准update语法

当你需要更新的表是单个或者被更新的字段不需要关联其他表带过来,则最后选择标准的update语句,速度最快,稳定性最好,并返回影响条数。如果where 条件中的字段加上索引,那么更新效率就更高。但对需要关联表更新字段时,update的效率就非常差。

2. inline view更新法

inline view更新法就是更新一个临时建立的视图。如:

update (select a.join_state as join_state_a,b.join_state as join_state_b

from t_join_situation a, t_people_info b where a.people_number=b.people_number

oracle千万行update优化,Oracle的update优化相关推荐

  1. oracle更新预计需要多久,oracle update操作的优化一例

    客户的每小时redolog日志量大,配合AWR和LOGMINER检查发现是由一条update语句引起.这条语句大概每小时执行80次左右,不仅产生了大量的重做日志,而且逻辑读也很高. 语句类似updat ...

  2. oracle instead of update触发器,Oracle中的instead of触发器

    Instead of : 用Trigger的内容替换 事件本身的动作,该触发器用在视图上,举例: 一:创建一个update替代触发器 (1)创建一个视图 1 create or replace vie ...

  3. oracle分区大批量update,Oracle 对分区作调整记得加update global indexes

    Oracle 对分区做调整记得加update global indexes 在对分区做ddl操作时,会使分区全局索引失效,需要加上关键字update global indexes. SQL> s ...

  4. oracle update范例,oracle 12c单范例数据库打12.1.0.2.4补丁记录

    当前位置:我的异常网» 数据库 » oracle 12c单范例数据库打12.1.0.2.4补丁记录 oracle 12c单范例数据库打12.1.0.2.4补丁记录 www.myexceptions.n ...

  5. oracle查询挂起,表挂起更新查询Oracle 11g(Table hangs on Update query Oracle 11g)

    表挂起更新查询Oracle 11g(Table hangs on Update query Oracle 11g) 我正在更新一个Oracle表字段,引用另一个具有类似Key字段的表,但在此特定表上, ...

  6. oracle建表备份数据,oracle建表备份脚本,如果update的数据不对,可以从WEB_RI_PLYEDR_CED_BAK找回...

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. --oracle建表备份脚本,如果update的数据不对,可以从WEB_RI_PLYEDR ...

  7. mysql update emp set_Mysql数据库性能优化一

    今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...

  8. oracle 10g 速度慢,让Oracle跑得更快—Oracle 10g性能分析与优化思路_数据库教程

    资源名称:让Oracle跑得更快-Oracle 10g性能分析与优化思路 内容简介: 在这本书里读者将会学到作者在性能优化方面的一些思路和思考,一些故障处理的方法和原则,这些东西是作者在实践中长期积累 ...

  9. oracle distinct分页优化_Oracle SQL性能优化最常用的40条建议

    关于Oracle SQL优化的内容,这一篇应该能满足常规大部分的应用优化需求,整整40条优化建议,干货满满. 1. SQL语句执行步骤 语法分析> 语义分析> 视图转换 >表达式转换 ...

最新文章

  1. python安装pillow模块错误
  2. 年度数据与月度数据转化_山东工会新媒体传播力指数2020年12月数据、年度数据出炉...
  3. 【GIT 基础篇二】创建版本库与提交
  4. Leet Code OJ 104. Maximum Depth of Binary Tree [Difficulty: Easy]
  5. _beginthreadex 一定要自己写 CloseHandle 可以不用 _endthreadex
  6. 这下真“火”了!为涨粉在红绿灯底座上跳舞 两女子被行拘...
  7. 丁克是什么意思,丁克家庭是什么意思,丁克家庭为什么越来越多
  8. CloudStack 中关于注册ISO模版的问题解决
  9. html页面颜色排列,HTML前端页面颜色的四种方法,色号表
  10. ae计算机内存不足,解决电脑内存不足的解决方法|电脑内存不足怎么办
  11. Java进阶之反射机制
  12. 学习笔记-测试利器Mocha
  13. CVPR2022 | 重新审视池化:你的感受野不是最理想的
  14. 关于消防系统安装的一些规范
  15. collapsible data-collapsed Jquery-mobile动态设置
  16. vscode 插件-常用插件
  17. hdu 4438 Hunters
  18. ORACLE查询基本语句
  19. 如何防止别人利用我的邮箱大量发垃圾邮件
  20. 在RMD使用过程中,右侧不生成图片的问题

热门文章

  1. 数字后端知识点扫盲——芯片harden block的划分
  2. 【京东账户】——Mysql/PHP/Ajax爬坑之产品列表显示
  3. 前端开发:JS中原型和原型链的介绍
  4. 小游戏 计算鼠标按下抬起的时间 按出2s整
  5. TCP-Wrappers
  6. Spark / Scala - scala.collection.convert.Wrappers$MutableSetWrapper - no valid constructor
  7. python向前逐步回归
  8. 分布式数据库在光大银行关键业务系统的应用探索
  9. python 在windows做个类似靠边停靠栏
  10. SQL注入之sqlmap入门教程