1

有没有办法优化在 rails 中创建 100K 行?我目前正在使用:

hash_numbers = SomeModel.all.map {|number| {number: number}}  
List.last.recipients.create hash_numbers

随着列表变长,它会以指数方式变慢。有什么建议么?

4

2 回答 2

2

您可以尝试其中一种批处理方法,find_in_batches或者find_each,可能仍然是一个漫长的过程,但更容易记忆。

或者使用某种方法来拆分查询limit,并将每个组投入到他们自己的后台进程中。

于 2013-07-30T18:11:42.023 回答
1

您是否尝试过将您的事务包装create在一个事务中,以便数据库将您的所有查询插入一个事务中?可能还有其他更好的解决方案,但是由于您使用 ActiveRecord 进行批量插入,因此也可以尝试一下:

ActiveRecord::Base.transaction do
  1000.times { List.last.recipients.create hash_numbers }
end
于 2013-07-30T18:12:20.503 回答