这里有两个人。我正在开发一个项目(PHP / Postgres),我正在将中型csv文件加载到我们的系统中(5k - 100k行)。这些csv记录将插入到一个包含大约100列(其中7列组成主键)的表中。这些文件不保证包含唯一记录,并且需要根据需要对记录进行upsert。
我已经实现了an upsert similar to this,它使用预准备语句来减少运行时间,并使系统每秒加载大约800条记录。这对于较小的文件就足够了,但对于100k +行的文件则不然。
在分析我的代码时,我注意到花了大量时间来构建长sql预处理语句,因此我决定使用APC用户缓存来缓存它们,从而大大缩短了运行时间。我还使用预备语句来提高性能。 Here is approximately how I have implemented this.
以下是问题:
修改:Here's the code including how the sql statements are constructed.