问题描述
我在一个表中有大约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)。
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秒内完成
因此,请按照上面 (a) 到 (e) 的方式进行操作
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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




