优化php中的大导入

时间:2010-06-03 23:24:50

标签: php micro-optimization

我有一个简单的导入程序,它遍历一个相当大的csv的每一行并将其导入数据库。

我的问题是:我应该调用另一个方法来插入每个对象(生成DO并告诉它的映射器要插入),还是应该在导入方法中对插入过程进行硬编码,复制代码?

我知道要做的优雅事情就是调用第二种方法,但我一直听到功能调用很昂贵。

您怎么看?

3 个答案:

答案 0 :(得分:4)

许多RDBMS品牌都支持执行批量导入的特殊命令。例如:

使用这些命令比从CSV数据源一次插入一行更受欢迎,因为批量加载命令的运行速度通常至少快一个数量级。

答案 1 :(得分:1)

我认为这不重要。考虑批量插入。至少要确保你正在使用一个事务,并考虑在插入之前禁用索引。

答案 2 :(得分:1)

这应该没关系,因为插入的时间可能比php代码长几个数量级。

正如其他人所说,批量插入将为您带来更多好处。 这些行级优化只会让你对优秀的更高级别优化视而不见。

如果您不确定,可以通过两种方式进行简单的计时,不需要花费超过几分钟的时间来查找。

如果一次性达到某些内存/时间/ ....限制,请考虑将这两种方法结合起来进行批量插入。