【oracle】利用笛卡尔积创建一张二十亿记录的连接表

首先创建一张含千条记录的tag表:

tag表定义:

create table tag(
    id number(12),
    name nvarchar2(20),
    primary key(id)
)

插值:

insert into tag
select rownum,
       dbms_random.String('*',dbms_random.value(6,20))
from dual
connect by level<1001

 

其次创建一张含两百万记录的Customer表:

customer表定义:

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

 

接下来就是创建连接表了:

create table customer_tag
as
select rownum as id,tag.id as tid,customer.id as cid from tag,customer

上面运行的时间有些长,部分机器上还可能爆ora-01652错误,请自行查找解决方案。

 

创建完毕后,查看新表有多大:

SQL> select count(*) from customer_tag;

  COUNT(*)
----------
2000000000

 

END

posted @   逆火狂飙  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2020-01-29 [Oracle/sql]查看当前用户名下有多少表 以及查看表字段信息
2020-01-29 [oracle/Sql]怎样比较两表的差异?
2015-01-29 【Canvas与艺术】红色凯尔特结
2015-01-29 Java环境变量设置
2015-01-29 Win7安装软件,界面上中文显示乱码的解决方案
2014-01-29 【Canvas技法】勾画十二齿斜齿齿轮轮廓
2014-01-29 【Java与排列组合】某年高考选择题:1,3,5,7,9中选两个,0,2,4,6,8中选两个,组成的无重复四位数有几个?
生当作人杰 死亦为鬼雄 至今思项羽 不肯过江东
点击右上角即可分享
微信分享提示