在 Postgresql 中创建一百万条记录的最快方法?

Fastest way to create a million records in Postgresql?

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

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

您可以使用 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);

我会用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)

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