【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-

posted @   逆火狂飙  阅读(188)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2019-09-07 【Java/数学/指数函数】使用牛顿中值法求方程2^x=5-x的近似根
2017-09-07 【Canvas与艺术】把美国队长的圆盾改成海鲜店的广告牌
2017-09-07 【Canvas与标志】无底色双层安布雷拉伞公司标志
2017-09-07 转帖:励建书:数学有助于大众理性思维的培养
2017-09-07 【Canvas与化学】圆角方形白底红绿蓝同心三色环碳元素图标
2017-09-07 【Canvas技法】八扇页正方形(拓扑结构基础案例)
2017-09-07 【Canvas与艺术】绘制等速螺线表盘
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示