oracle数据库数据量较大时更新数据较慢问题
2015-12-03 08:47
531 查看
这今天在研究kettle工具,是一款国外纯java开发的开源ETL工具,抽取数据确实非常方便,大家有空可以去下载下来试试看,方便之处在于它不用安装,解压完了就能直接用了(必须提前配置jdk和jre环境到系统环境中)。今天要说的不是这款软件,问题是由使用这个软件引起的,我在抽取数据后需要完成一个更新操作语句如下:
update case_person_saxx a set a.case_id=(select id from case_xzcf b where b.app_id = a.app_id) ;
update invole_case_unit_saxx a set a.case_id=(select id from case_xzcf b where b.app_id = a.app_id);
上面的语句中case_person_saxx表和case_xzcf 表中数据量大概在16万条左右,说起来也不是特别大,但是这个语句执行起来特别的慢,我等了半个多小时都没执行完,后来建索引稍微快一点,在网上找到一种更快捷的更新语句(因为我数据库基础不好很多语句不熟悉,呵呵!大神来看到了别笑话我就行!)如下:
merge into case_person_saxx t
using (select max(id) as id, app_id from case_xzcf group by app_id) s
on (t.app_id = s.app_id)
when matched then
update set t.case_id = s.id;
merge into invole_case_unit_saxx t
using (select max(id) as id, app_id from case_xzcf group by app_id) s
on (t.app_id = s.app_id)
when matched then
update set t.case_id = s.id;
测试了一下 7秒钟就完成了更新,瞬间让我觉得自己懂得太少,真心需要好好学习。
记下来以便自己以后查阅,如果有同样困扰的同学可以试试这个语句。
相关文章推荐
- Oracle常用函数
- db2像oracle一样使用hints(guidelines)
- oracle 触发器number判断空值,:NEW赋值,for each row,sql变量引号,to_date,to_char
- Oracle的10046事件
- ORACLE创建表空间、创建用户以及赋值权限
- oracle dbconsole 因为IP改动启动不了,重建方式
- oracle中的检查点Ckpt和SCN号
- Oracle 中的rowid
- Oracle ROWID详解
- SCN号与oracle数据库恢复的关系
- Oracle 中的一些重要V$ 动态性能视图,系统视图和表
- oracle常用动态性能视图
- oracle触发器调试
- Oracle exp imp 常见问题解决
- Mybatis+Oracle实现按条件分页查询
- Oracle异常date format picture ends before converting entire input string ora-01830oracle
- poi解析上传的Excel xlsx 保存到Oracle 趁还没忘记,留下
- pl/sql 连接远程oracle数据库
- win7,64位操作系统安装oracle
- 补装Windows下Oracle client的 OracleMTSRecoveryService