【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-
分类:
Oracle.千万级表
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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与艺术】绘制等速螺线表盘