有没有办法优化在 rails 中创建 100K 行?我目前正在使用:
hash_numbers = SomeModel.all.map {|number| {number: number}}
List.last.recipients.create hash_numbers
随着列表变长,它会以指数方式变慢。有什么建议么?
有没有办法优化在 rails 中创建 100K 行?我目前正在使用:
hash_numbers = SomeModel.all.map {|number| {number: number}}
List.last.recipients.create hash_numbers
随着列表变长,它会以指数方式变慢。有什么建议么?
您可以尝试其中一种批处理方法,find_in_batches
或者find_each
,可能仍然是一个漫长的过程,但更容易记忆。
或者使用某种方法来拆分查询limit
,并将每个组投入到他们自己的后台进程中。
您是否尝试过将您的事务包装create
在一个事务中,以便数据库将您的所有查询插入一个事务中?可能还有其他更好的解决方案,但是由于您使用 ActiveRecord 进行批量插入,因此也可以尝试一下:
ActiveRecord::Base.transaction do
1000.times { List.last.recipients.create hash_numbers }
end