请教高手如何优化下面oracle语句,19W条数据花了几个小时

问题描述

请教高手如何优化下面oracle语句,19W条数据花了几个小时 3C
update agz set fa_id=(select B from B123 where a=agz.old_fa_id);
commit;
update agz set person_id=(select ry.id from dm_gy_ry ry where ry.sfzjhm=agz.ry_sfz and ry.yxbz='Y' and rownum=1);
commit;
update agz set person_depart=(select ry.jg_id from dm_gy_ry ry where ry.id=agz.person_id);
commit;
update agz set pperson_dw=(select jg.dw_id from dm_gy_jg jg where jg.id=agz.person_depart);
commit;
update agz set shs=( select fa.fk_px_ss_chs_id from t_px_ss_fa fa where fa.c_id=agz.fa_id);
commit;

解决方案

通常不需要用子查询。拿第一个sql来说,调整成下面这样

 update agzB123 set fa_id=B where a=agz.old_fa_id;

其他sql类似方式把子查询""解放""出来。
当然这样还不够,要确保where条件可以用上合适的索引。
还拿第一个sql来说,如果agz.old_fa_id或者B123.a上有索引的话,执行调整后的sql效率会提高。

解决方案二:
先检索出结果,在更新,不要写一块

解决方案三:
update agz set fa_id=(select B from B123 where a=agz.old_fa_id);
这条sql语句本身没有问题,建议你agz.old_fa_id和B123.a建立一个索引,速度就上去了

解决方案四:
语句都很简单,没有多少优化的余地,对条件列建索引吧, 哪个语句慢就关注where条件的列

解决方案五:
用MERGE 来更新

时间: 2024-11-01 10:22:56

请教高手如何优化下面oracle语句,19W条数据花了几个小时的相关文章

请教高手如何实现flash和asp.net的数据交互?

问题描述 达人们,我现在想在asp.ne中实现和flash的数据交互,也就是在asp.ner的html中嵌入一个flash,然后可以给flash传入数据让他显示,点击flash也可以触发事件,请高手们给个实例小弟学习学习,谢谢 解决方案 解决方案二:用js控制吧解决方案三:能具体点不,我菜鸟一个呢.解决方案四:FLEX就是解决这个问题的!基于XML描述的FLASH一半句说不清可以找资料学习解决方案五:http://www.8tops.com/113_skill_734D57E20EE8428BB

请教高手解决一下asp.net 提交后显示数据问题

问题描述 visualstudio2010,在Textbooks后设置RequiredFieldValidator5(不能为空)连接了数据库,是可以提交进去的还在当前页面formview下面添加了一个linkbutton(点击能出现已提交的数据)问题:当进入页面直接点击linkbutton时(数据库中初始是有数据的),页面显示RequiredFieldValidator5(不能为空)why?是不应该出现的(描述的不大清楚,见谅) 解决方案 解决方案二:什么?解决方案三:数据库中有数据,并不意味着

请教高手一个问题

问题描述 请教高手一个问题,我这里有两台服务器DELL2850cpu3.2内存3G一台用作web服务器,一台用作数据库服务器.oracle中有十万条数据,在web服务器中启动websphere5.1,cpu占用率百分之九十多,系统页面刷新不出来.请问是硬件问题,还是websphere没有设置好.谢谢 解决方案 解决方案二:需要做Profiling才能够找出瓶颈.CPU占用率高的话,需要看WAS进程占用了多少?如果单个WAS进程使用超过80%的话,那么你肯定需要加CPU了解决方案三:启动websp

gridview-请教高手如何在gridcontrol中放入多条记录并保存在数据库中

问题描述 请教高手如何在gridcontrol中放入多条记录并保存在数据库中 如图 解决方案 http://blog.csdn.net/jimk5200/article/details/9180861

用一条mysql语句插入多条数据_Mysql

       假如有一个数据表A: id name title addtime         如果需要插入n条数据 : $time= time(); $data = array( array( 'name'=>'name1','title'=>'title1','addtime'=>$time; ), array( 'name'=>'name2','title'=>'title2','addtime'=>$time; ), array( 'name'=>'nam

oracle 数据库用的plsql工具,执行的sql按F5查看cpu耗费,请教高手帮忙解答!

问题描述 oracle 数据库用的plsql工具,执行的sql按F5查看cpu耗费,请教高手帮忙解答! 主要区别在于走索引,走了索引,耗费降低,但是执行速度变慢了,但是不走索引,执行速度变快了,但是耗费上升!请问原因是什么?是不是意味着,耗费越高,执行速度越快吗?还是两者没有必然联系?我们在设计sql时,是要先考虑哪方面? 解决方案 楼主 你知不知道索引的意思? 索引类似书的目录结构,按照索引查找执行速度怎么变慢了呢? 至于耗费和速度的关系就如同你跑步一样的 你费力气点跑,就跑的快一点 你省力气

诚心请教高手 :使用JDBC更新ORACLE数据

问题描述 程序需求:程序每5分钟,要更新一次数据库里表的数据,每一次要执行38条SQL语句,每一条SQL语句要更新大约16000多个字段,在运行当中出现了这样一个问题,大约运行10个多小时以后,程序就卡死了,程序什么异常都没抛出,控制台也没有异常抛出,诚心请教高手,在这方面有没有更好的解决方案.try{Longstart=System.currentTimeMillis();conn.setAutoCommit(false);stmt=conn.createStatement();//listS

oracle语句-oracle 语句问题,哪个高手可以指点

问题描述 oracle 语句问题,哪个高手可以指点 我要查询一个日期区间内每个月最后一天的数据,哪位高手给指点一下吧 解决方案 select * from (select a.*, row_number() over(partition by to_char(a.data, 'yyyyMM') order by a.data desc) rn from tmp a where a.date <= to_date('2013-01-01', 'yyyy-mm-dd') and a.date >=

请教高手:“insert into 语句语法错误”是什么意思?

问题描述 请教高手: 我在向access数据库中写入数据时,出现错误提示:"insertinto语句语法错误",请问这是什么意思? 解决方案 解决方案二:高人多给指点啊?小弟万分着急!!!解决方案三:Insert语句在语法上有错误!解决方案四:试着把你的Sql语句发出来看一下.解决方案五:写出源代码,肯定有很多人可以帮你解决解决方案六:把你的sql语句发出来,,大家才能帮忙解决方案七:insertinto[表名](列名1,列名2...)values(值1,值2...)解决方案八:thi