快捷搜索: 王者荣耀 脱发

create table ***as select ***并行度用在哪里更快

现在需要用create table ***as select ***建个新表,大家都知道,用并行度可以加快建表的速度,但是create可以用并行度,select也可以用并行度,那么假设同样的并行度只能用在一个地方,到底用在哪里会快些了???我们来做个试验。。。。

1. 建基础表test1

create table as select object_id,object_name from dba_objects;

SQL> select count(1) from test1; COUNT(1) ---------- 49804

SQL> INSERT/*+append*/ INTO TEST1 SELECT t.* FROM TEST1 t,(SELECT 1 FROM dual CONNECT BY level<100); 4930596 rows created. SQL> commit; Commit complete.

SQL> select count(1) from test1; COUNT(1) ---------------- 4980400

2. 分别用两种并行度的方式建新表

SQL> create table test4 parallel 4 as select * from test1 where object_id>1000; Table created. Elapsed: 00:00:44.56

SQL> create table test5 as select/*+parallel(t 4)*/ * from test1 t where object_id>1000; Table created. Elapsed: 00:00:40.52

可见这两种方法差不多,那么要是都加上并行度是不是更快了??再试下

SQL> create table test6 parallel 4 as select/*+parallel(t 4)*/ * from test1 t where object_id>1000; Table created. Elapsed: 00:00:35.54

快是快些,但是也快不了多少,而且create加并行度建表后,需要将表的degree属性还原为1,又要多写个脚本,所以还是一切从简,直接在select后面加并行度。。。。。。

经验分享 程序员 微信小程序 职场和发展