从一月至今,我总共归纳了三种创建千万级大表的方案,它们是:
下面是这三种方案的对比表格:
# | 名称 | 地址 | 主要机制 | 速度 |
1 | 在Oracle中十分钟内创建一张千万级别的表 | https://www.cnblogs.com/xiandedanteng/p/12169527.html | connect by+Insert into select | 由于插入量是线性增长的,导致速度在前三种方案里最慢 |
2 | 25分钟创建一千六百万大表全记录 | https://www.cnblogs.com/xiandedanteng/p/12493930.html | 同上 | 插入量是成几何级数增长的,速度要比上面方案快些 |
3 | 用笛卡尔积来创建一千六百万大表 整体19分钟 大表建成两分钟 设置id13分钟 | https://www.cnblogs.com/xiandedanteng/p/12496028.html | 用connect by生成小表,再用笛卡尔积产生大表 | 由于小表相乘产生笛卡儿积迅速,使得速度最快。 |
4 | 将大量数据批量插入Oracle表的类,支持停止续传 | https://www.cnblogs.com/xiandedanteng/p/12149638.html | 用java程序生成数据,用批量插值语句插值 | 没有直接用sql生成数据,二十多了一层java,因此速度落于下乘。但对数据内容有要求的场合一定会用到这种方案。 |
现在可以说,两分钟内创建一张千万级大表很寻常,当然把id规整好设上主键需要十三分钟左右时间,这都是一步步尝试后的宝贵经验总结,另外用java程序生成数据也是一条不可或缺的路子,对数据内容格式有要求的场合离不了它。
--2020年3月15日 总结于此以备考--