2018-08-09-批处理方法

在数据量比较大时,一次性从数据库中取出所有数据时,相当吃内存,为了满足需求,rails提供了两个方法用来批量处理数据的方法。

find_each

批量取出后,然后单个发送到(块)

User.find_each do |user|
  # 单个处理
end

也可以带选项

User.find_each(start: 100,finish: 2000,batch_size: 100) do |user|
  # 单个处理
end

PS:1、默认情况下,按主键升序排序
2、默认情况下,一次取出1000条数据

find_in_batches

批量取出后,然后一次性将本批数据发送到(块)

Invoice.find_in_batches do |invoices|
   # 将本批数据导出
end

PS 选项和 find_each 一样

你可能感兴趣的:(2018-08-09-批处理方法)