【Oracle】利用笛卡尔积制作含有一千六百万条记录的表 精简版
前作:https://www.cnblogs.com/heyang78/p/12496028.html 里谈到了如何用笛卡尔积来创建一千陆佰万大表,但过程还可以更短些,现总结如下:
1.准备基本表
create table emp( id int, name nvarchar2(20), age int, salary int, create_time timestamp default sysdate, primary key(id))
2.给基本表塞入四千条数据。
insert into emp select rownum, dbms_random.string('*',dbms_random.value(6,20)), dbms_random.value(18,65), dbms_random.value(1000,50000), sysdate from dual connect by level<4001
3.以基本表为基础创建辅助表。
CREATE TABLE emp2 as select * from emp;
4.使用基本表和辅助表生成的笛卡尔积生成一千六百万大表。
create table emp_final as select a.* from emp a cross join emp2 b;
到这里,大表就形成了,花的时间不长,如果要把主键规整好请继续往下看。
5.规整主键。
update emp_final set id=rownum where 1=1;
这一步耗的时间比第四步长。
6.设定主键。
ALTER TABLE emp_final ADD CONSTRAINT emp_final_pk PRIMARY KEY (id);
至此一个完整的一千六百万大表就完成了,在我的t440p机器上,基本能控制在25分之内。
-END-