3

私は巨大なデータベーステーブルを持っています、そして私はここで何かをする必要があります、しかし私はこれをどのように行うことができますか?私が書いた場合:

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

それはロードであり、システムをロードし、そして時間がかかりました。すべてのデータをいくつかの変数にロードしないことによってテーブルを反復処理する方法はありますか?

4

2 に答える 2

6

find_in_batchesこれは、またはを使用するユースケースfind_eachです。

これにより、データがチャンクごとに読み込まれます。ドキュメントを参照してください。

于 2012-09-09T20:03:09.153 に答える
0

この質問の最良の出発点は、おそらくRailsガイドのエントリActive RecordQueryInterfaceです。

基本的に、組み込みメソッドに関する限り、との間find_eachで選択できますfind_in_batches。前者はfindと同じように使用されます(つまり、反復ごとに1つのレコードが得られます)。後者は、バッチの配列を提供します。

于 2012-09-09T20:09:53.310 に答える