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

问题描述

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

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

解决方法

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

谁知道呢,可能还有更快的速度。