我有庞大的数据库表,我需要在这里做点什么,但我怎么做呢? 如果我写:
@person = Person.all
@person.each do |p|
//something
end
它是负载,负载系统,需要时间。有没有办法通过不将所有数据加载到某个变量来迭代表?
答案 0 :(得分:4)
这是一个使用find_in_batches
或find_each
。
这将按块see doc加载数据块。
答案 1 :(得分:1)
这个问题的最佳起点可能是Rails Guide entry Active Record Query Interface。
基本上,就内置方法而言,您可以在find_each
和find_in_batches
之间进行选择。前者的使用方式与find相同(意味着每次迭代会给你一条记录)。后者为您提供批次数组。