3

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

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

它的负载,负载系统,并需要时间。有什么方法可以通过不将所有数据加载到某个变量来迭代表?

4

2 回答 2

6

这是一个使用find_in_batchesor的用例find_each

这将逐块加载数据,请参阅 doc

于 2012-09-09T20:03:09.153 回答
0

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

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

于 2012-09-09T20:09:53.310 回答