zoukankan      html  css  js  c++  java
  • 【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-

  • 相关阅读:
    win10系统封装
    docker基础知识
    TCP三次握手顺手看个示例
    磁盘挂载
    jQuary
    docker rpm包安装
    Mysql单机安装
    docker网络模式
    JavaScript DOM
    JavaScript作用域,面向对象
  • 原文地址:https://www.cnblogs.com/heyang78/p/15239683.html
Copyright © 2011-2022 走看看