PostgreSQL中多次插入所需的优化

时间:2011-11-03 15:43:58

标签: sql postgresql

我基本上有3张桌子。一个是核心表,另一个2依赖于第一个。我要求在所有表中添加最多70000条记录。我确实为表设置了约束(主键和外键,索引,唯一等)。我无法进行批量导入(使用COPY命令),因为要求中没有标准的.csv文件,并且明确要求映射,并且在基于C的编程文件中外部应用了少量验证。每个记录详细信息(最多70000)将从.pgc(基于ECPG的C编程文件)传递到postgresql文件。前几个记录花费的时间较少,而且后者的记录表现糟糕!结果非常可悲,需要数天才能覆盖20000!我可以介入哪些绩效指标?请指导我。

我的主表的架构是

CREATE TABLE contacts 
( contact_id SERIAL PRIMARY KEY
, contact_type INTEGER DEFAULT 0
, display_name TEXT NOT NULL DEFAULT ''
, first_name TEXT DEFAULT ''
, last_name TEXT DEFAULT ''
, company_name TEXT DEFAULT ''
, last_updated TIMESTAMP NOT NULL DEFAULT current_timestamp
, UNIQUE(display_name)
) WITHOUT OIDS;

1 个答案:

答案 0 :(得分:1)

删除/禁用索引/触发器,并使用COPY。我们使用它在几分钟内导入数百万行和千兆字节的数据。

文档深入探讨了这一点:http://www.postgresql.org/docs/9.1/static/populate.html

Postgres在批量加载数据时非常,如果你以正确的方式做到这一点。