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

Oracle 复制5000万记录

ASKTOM 2020-05-11
533

问题描述

嗨,兄弟,

请你帮忙。

我的问题是:-

我想用5000万记录从其他表复制一个表,现在什么是最好的方法和最快的方法来重新创建它。

1)PLSQL-具有限制的批量收集 (也需要2到3天的时间)。
2) 插入所有带有paralle提示的内容 (它在运行6到7个小时后会引发一些空间错误,就像某些数据库空间问题一样,但是在我重新解决之后,它也花费了相同的时间)。
3) 在目标表上创建索引是个好主意。
4) 我是否需要禁用sourec表上的所有索引和约束?

如果可能的话,请说出最好的方法,我正在努力解决所有问题。

专家解答

没有太多的细节可以继续,但最可能的原因是目标表上的索引/约束。

例如:

表上有5000万行,笔记本电脑上没有索引... 我可以在一分钟内做到这一点

SQL> create table src
  2  as select * from dba_Objects;

Table created.

SQL> create table tgt 
  2  as select * from dba_Objects where 1=0;

Table created.

SQL>
SQL> set timing on
SQL>
SQL> insert /*+ APPEND */ into tgt
  2  select s.* from src s,
  3    ( select 1 from dual connect by level <= 50000000/82000 );

49931301 rows created.

Elapsed: 00:01:03.82


同一张表上有100万行... 现在有4个索引 ....

SQL> set timing off
SQL> truncate table tgt;

Table truncated.

SQL>
SQL> create index tgt_ix1 on tgt (owner);

Index created.

SQL> create index tgt_ix2 on tgt (object_name);

Index created.

SQL> create index tgt_ix3 on tgt (object_id);

Index created.

SQL> create index tgt_ix4 on tgt (object_type);

Index created.

SQL>
SQL>
SQL> set timing on
SQL> insert /*+ APPEND */ into tgt
  2  select s.* from src s,
  3    ( select 1 from dual connect by level <= 1000000/82000 );

983868 rows created.

Elapsed: 00:00:14.84


这将推断出700秒 (12分钟) 的5000万行。

和平了,兄弟。
文章转载自ASKTOM,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论