在数据量比较大时,一次性从数据库中取出所有数据时,相当吃内存,为了满足需求,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 一样
网友评论