2

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

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

我知道优雅的做法是调用第二种方法,但我一直在脑海中听到函数调用很昂贵。

你怎么看?

4

3 回答 3

4

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

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

于 2010-06-03T23:29:05.043 回答
1

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

于 2010-06-03T23:32:54.643 回答
1

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

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

如果您不确定,请用两种方式进行简单的计时,找出时间不会超过几分钟。

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

于 2010-06-03T23:40:04.207 回答