Oracle创建分区表,使用insert into * select方式导入数据很慢,除了insert into、数据泵导入数据还有什么方式能快速导入呀?
如果启用并行会加速导入速度嘛?或者nologging呐?
开并行和nologging会加快导入速度,建议使用。
ctas 创建分区表:
create table 分区表名
NOLOGGING
PARALLEL 8
TABLESPACE 表空间名称
AS select /*+PARALLEL(t,8)*/ *
from 原表名 t
where 1=1;
insert方式:
alter session enable parallel dml;
insert /*+ append parallel(表名,8) */ into 表名 select /*+ parallel(原表,8)*/* from 原表;
alter session disable parallel dml;
评论
有用 0
本身insert into select不会慢,这种每秒1万条数据是最差的。实际会很快。
如果慢问题可能在select上,他慢。
评论
有用 0二楼专家,我测试了下,CTAS方式,nologging和开并行确实可提高速度,但是insert into方式的效果并不明显,请看例子:
QL> alter session enable parallel dml;
Session altered.
Elapsed: 00:00:00.00
SQL> insert /*+append parallel(tb_zxp,8)*/ into tb_zxp nologging select /*+parallel(tb_waybill,8)*/ * from tb_waybill where corp_id<>'0032';
248588 rows created.
Elapsed: 00:00:11.87
SQL> rollback;
Rollback complete.
Elapsed: 00:00:00.02
SQL> alter session disable parallel dml;
Session altered.
Elapsed: 00:00:00.01
SQL> insert into tb_zxp select * from tb_waybill where corp_id<>'0032';
248588 rows created.
Elapsed: 00:00:12.47
评论
有用 0
墨值悬赏


