主要针对PostgreSQL,其中部分原则也可以其他数据库:
1. 使用Transaction,减少提交次数。(副作用是难以获取执行进度)
2. (仅)PG中可以使用独有的copy方法。
3. 使用unlogged table。(副作用是降低数据库安全性)
4. (仅)PG中使用插入组,即insert into table_a(col_a, col_b) values(val_a1, val_b1), (val_a2, val_b2), (val_a3, val_b3), (val_a4, val_b4);
5. 优化触发器,因为方案4在遇到触发器时,效果会大打折扣。
6. 如果批量insert时,每一条记录的id关键字需要分别预先从数据库获得,则一定要考虑产生id的运算时间。
7. 如果批量insert时,如果与服务器交互次数非常多,则一定要考虑网络传输时间。