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

通过实验对比,探讨在使用CREATE TABLE AS SELECT创建新表时,是在CREATE语句中指定并行度还是在SELECT语句中指定并行度能获得更快的建表速度。结果显示,两者效果相近,而在SELECT后添加并行度操作更简便。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在需要用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后面加并行度。。。。。。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值