【Oracle】利用笛卡尔积创建千万级表的全记录

执行语句:

-- tag表结构
create
table tag( id number(12), name nvarchar2(20), primary key(id) )
-- tag充值
insert into tag select rownum, dbms_random.String('*',dbms_random.value(6,20)) from dual connect by level<1001
--用户表结构 create table customer( id number(12), name nvarchar2(20), primary key(id) )
--用户表充值
insert into customer select rownum, dbms_random.String('*',dbms_random.value(6,20)) from dual connect by level<20001
--利用笛卡尔积创建连接表 create table customer_tag as select rownum as id,tag.id as tid,customer.id as cid from tag,customer where mod(tag.id,2)=0
--连接表加主键 alter table customer_tag add constraint pk_customer_tag primary key (id);
--连接表设索引
create index idx_tid_cid on customer_tag(tid,cid);

执行记录:

SQL> set timing on;
SQL> create table tag(
  2      id number(12),
  3      name nvarchar2(20),
  4      primary key(id)
  5  );

表已创建。

已用时间:  00: 00: 00.01
SQL> insert into tag
  2  select rownum,
  3         dbms_random.String('*',dbms_random.value(6,20))
  4  from dual
  5  connect by level<1001;

已创建 1000 行。

已用时间:  00: 00: 00.08
SQL> commit;

提交完成。

已用时间:  00: 00: 00.00
SQL> create table customer(
  2      id number(12),
  3      name nvarchar2(20),
  4      primary key(id)
  5  );

表已创建。

已用时间:  00: 00: 00.01
SQL> insert into customer
  2  select rownum,
  3         dbms_random.String('*',dbms_random.value(6,20))
  4  from dual
  5  connect by level<20001;

已创建 20000 行。

已用时间:  00: 00: 00.27
SQL> commit;

提交完成。

已用时间:  00: 00: 00.01
SQL> create table customer_tag
  2  as
  3  select rownum as id,tag.id as tid,customer.id as cid from tag,customer where mod(tag.id,2)=0;

表已创建。

已用时间:  00: 00: 03.91
SQL> select count(*) from customer_tag;

  COUNT(*)
----------
  10000000

已用时间:  00: 00: 00.10
SQL> alter table customer_tag add constraint pk_customer_tag primary key (id);

表已更改。

已用时间:  00: 00: 03.90
SQL> create index idx_tid_cid on customer_tag(tid,cid);

索引已创建。

已用时间:  00: 00: 04.55
SQL> commit;

提交完成。

已用时间:  00: 00: 00.00
SQL>

END

posted @ 2022-01-29 19:53  逆火狂飙  阅读(112)  评论(0编辑  收藏  举报
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东