【问题标题】:Fastest way to create a million records in Postgresql?在 Postgresql 中创建一百万条记录的最快方法是什么?
【发布时间】:2021-08-07 23:26:03
【问题描述】:

什么是创建百万记录的最快方法,其中第一列是增量数字(不是主键),其他字段使用它们的默认值?

我是否必须创建一个 PG 程序才能更快,因为它是内部的,即不通过 DB 驱动程序??!!

【问题讨论】:

    标签: postgresql insert auto-increment


    【解决方案1】:

    您可以使用generate_series 并省略所有应该使用默认值的列:

    insert into test(id) select generate_series(1,1000000);

    要将相同的序列插入到多个列中,您可以重用该系列:

    insert into test(id,id2) 
    select seq,seq 
    from generate_series(100,110) v(seq);
    

    【讨论】:

    • 如果我想要前两个字段,我只是在查询中添加它,对吗??
    • @sten 第二个字段应该是什么?相同的价值?不同的顺序?一个常数?还有吗?
    • 与第一个相同的值,即 test(id1,id2)
    • @sten 查看编辑,您只能在其中生成系列一次
    • 聪明,谢谢... v(seq) 是什么意思,没见过这种语法...假设它是某种别名
    【解决方案2】:

    我会使用insert into...select...from generate_series(1,1e6),因为它是最简单的,速度不是一切,但也不是最快的。

    insert into foobar (id,id2) select x,x from generate_series(1,1e6) f(x);
    INSERT 0 1000000
    Time: 4346.187 ms (00:04.346)
    
    copy foobar (id,id2) from program 'perl -le "print qq{\$_\t\$_} foreach 1..1_000_000"';
    COPY 1000000
    Time: 2720.630 ms (00:02.721)
    

    谁知道呢,可能还有更快的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 2020-08-10
      • 1970-01-01
      • 2011-04-26
      • 2014-03-25
      相关资源
      最近更新 更多