2 liuwu87 liuwu87 于 2014.04.19 00:24 提问

oracle update语句优化,听说执行要200多分钟

今天去帮人优化存储过程,其中有个过程里面有个update语句执行要很久很久。其中加粗where条件没看明白(开发的人也不在了),这个条件去查询半天出不来结果。将in改成exists后也没效果。
其中:BPTTMBA 一百多万数据,BPTTMBC 只有27条,TDTMSTD 二十多万数据。

update BPTTMBA
set (BPTTMBA.TIME_BCODE, BPTTMBA.START_DATE, BPTTMBA.END_DATE) =
(select BPTTMBC.TIME_BCODE, BPTTMBC.START_DATE, BPTTMBC.END_DATE
from BPTTMBC
where (BPTTMBA.DUE_DT_NWD >= BPTTMBC.START_DATE and BPTTMBA.DUE_DT_NWD <= BPTTMBC.END_DATE)
or (BPTTMBA.DUE_DT_NWD <= BPTTMBC.START_DATE and BPTTMBA.DUE_DT_NWD >= BPTTMBC.END_DATE)
)
where BPTTMBA.AC_NO IN (select BPTTMBA.AC_NO
from TDTMSTD
where BPTTMBA.AC_NO = TDTMSTD.MSTD_ARR_NO
and ((TDTMSTD.MSTD_PRD_CODE = '6610' and BPTTMBA.AMT_TYP='P')
or BPTTMBA.AMT_TYP='A')
);

2个回答

swings2010
swings2010   2014.04.19 16:20

请检查Oracle 执行计划

callandy
callandy   2015.12.01 11:13

BPTTMBA.DUE_DT_NWD >= BPTTMBC.START_DATE and BPTTMBA.DUE_DT_NWD <= BPTTMBC.END_DATE)
or (BPTTMBA.DUE_DT_NWD <= BPTTMBC.START_DATE and BPTTMBA.DUE_DT_NWD >= BPTTMBC.END_DATE)
)
你这段条件没什么用呢

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
update 语句更新慢如何优化
最近一次升级研发的一个SQL
Oracle的update语句优化研究 批量更新
Oracle的update语句优化研究 一、 update语句的语法与原理 1. 语法 单表:UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 如:update t_join_situation set join_state='1' where year='2011' 更新年度为“2011”的数据的join_state字段为“1”。如果更新的字段加了
oracle中update语句的性能优化
http://www.jbxue.com/db/13211.html
执行update语句后要commit才能生效
今天在学习oracle视频时,自己动手做了如下操作; 1.在SQL Window中执行语句update emp set sal='10000' where ename='SMITH',更新成功后,执行查询emp表语句,发现更新成功 2.在Command window中再次执行查询emp表语句,发现结果与步骤1中不一致 问题在于;步骤1中执行完update语句,没有点击commit图标进行提交
MySQL批量update语句优化
对MySQL中的表进行批量update的时候,如果每个记录用一个update语句,5000条记录的话,大概需要30秒钟。下面采用的case when方法可以把5000条update拼成一条: Update myTable SET myField = CASE id WHEN 1 THEN 'value1' WHEN 2 THEN 'value2' WHEN 3
对大量数据的update优化操作
最近做的项目,上线后出了不少问题,所以我就经常去查数据库数据,翻各种日志等,但是在查询的时候发现好蛋疼,有些地方的时间是写 “2016-08-11 20:13:02”这种格式,有些地方的时间是写 “1470917582000”这种格式,然后多张表数据进行对比的时候就很蛋疼,我得不停进行时间转换,恶心得不行。最后实在忍不了,我要统一时间格式 (由于时间都是单独一个字段记录,所以比较好处理),两种格式,
Oracle SQL:update更新语句总结
Oracle update SQL 语句总结: update 用于修改表中的数据
oracle执行update语句卡住不动
问题开发的时候debug到一条update的sql语句时程序就不动了,然后我就在plsql上试了一下,发现plsql一直在显示正在执行,等了好久也不出结果。但是奇怪的是执行其他的select语句却是可以执行的。原因和解决方法这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关
oracle中一个表update慢的优化
案例简述 数据库:10.129.130.179 用户:tlstat_newbg_studio 语句:   update DY_USER_ANALYSIS_LEVEL set LOGON_CNT_GUID = LOGON_CNT_GUID + to_number(0) where ST
Oracle update性能优化
当执行批量刷新数据时,以前我写过最好是写成merge into,当然还有一种方式,如下: SQL> create table test1 as select * from dba_objects where rownum SQL> create table test2 as select * from dba_objects where rownum SQL> create unique