Rails为巨大的db表迭代

时间:2012-09-09 20:00:29

标签: ruby-on-rails ruby

我有庞大的数据库表,我需要在这里做点什么,但我怎么做呢? 如果我写:

@person = Person.all
@person.each do |p|
//something
end

它是负载,负载系统,需要时间。有没有办法通过不将所有数据加载到某个变量来迭代表?

2 个答案:

答案 0 :(得分:4)

这是一个使用find_in_batchesfind_each

的用例

这将按块see doc加载数据块。

答案 1 :(得分:1)

这个问题的最佳起点可能是Rails Guide entry Active Record Query Interface

基本上,就内置方法而言,您可以在find_eachfind_in_batches之间进行选择。前者的使用方式与find相同(意味着每次迭代会给你一条记录)。后者为您提供批次数组。