暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 在最少的时间内更新数据库中的500万条记录

askTom 2017-09-05
349

问题描述

我在一个表中有大约500万条记录,我需要从另一个表中更新该表的一列。I have used Bulk Collect with FORALL option ( limit = 500 ) but it is taking 6 to 7 hours

Do we have any option available with oracle which can process the same in least time ( at least less than 1 hour)。

专家解答

良好的... 没什么可去的,但你可能会慢下来的原因是:

a-从另一个表获取数据的成本很高
b-触发器发射
c-约束被过度检查
d排链
正在更新的电子索引。

可能是其中一个、部分或全部,因为更新500万行绝对不需要很长时间,因为我可以在笔记本电脑上在30秒内完成

SQL> create table t 
  2  as
  3  select d.* from dba_objects d,
  4    ( select 1 from dual connect by level <= 100 );

Table created.

SQL> select count(*) from t;

  COUNT(*)
----------
   7829100

1 row selected.

SQL>
SQL> set timing on
SQL> update t set owner = lower(owner)
  2  where rownum <= 5000000;

5000000 rows updated.

Elapsed: 00:00:31.56


因此,请按照上面 (a) 到 (e) 的方式进行操作
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论