Railsで、find_eachとwhereの違いは何ですか?
2023-10-08 09:03:41
質問
Railsでは find_each と ここで は、ActiveRecordがサポートするDatabaseからデータを取得するために使用されます。
クエリの条件を
where
のようにします。
c = Category.where(:name => 'Ruby', :position => 1)
また、バッチサイズを
find_each
のようにします。
Hedgehog.find_each(batch_size: 50).map{ |p| p.to_json }
しかし、次の2つのコードの違いは何でしょうか?
# code 1
Person.where("age > 21").find_each(batch_size: 50) do |person|
# processing
end
# code 2
Person.where("age > 21").each do |person|
# processing
end
コード1は毎回50個のタプルを一括で取得し、コード2は一度にすべてのタプルを取得するのでしょうか?詳細な説明をお願いします。
私の意見は
-
両方とも
where
とfind_each
は一括取得に使用できますがfind_each
. -
find_each
はクエリ条件を渡すことをサポートしていません。
私の理解が誤っている場合は、訂正してください。
どのように解決するのですか?
アクティブなレコードリレーションは、自動的にすべてのレコードをメモリにロードしません。
を呼び出したとき
#each
を呼び出すと、すべてのレコードがメモリに読み込まれます。また
#find_each
を呼び出すと、レコードは指定されたバッチサイズのバッチでメモリにロードされます。
ですから、クエリが返すレコードの数がサーバの利用可能なリソースに対して過剰なメモリ量になる場合は
#find_each
を使うのは素晴らしい選択でしょう。
基本的にはrubyのlazy enumerationを使うようなものです。
#to_enum#lazy
と
#each_slice
で、次に
#each
(とする(非常に便利)。
関連
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] rake db:migrate db:reset とdb:schema:loadの違いについて
-
[解決済み] Ruby/RailsでHashからキーを削除して残りのHashを取得する方法は?
-
[解決済み] イコール、エクル、==、==の違いは何ですか?
-
[解決済み] Rubyのincludeとrequireの違いは何ですか?
-
[解決済み] Ruby on Railsで、DateTime、Timestamp、Time、Dateの違いは何ですか?
-
[解決済み] RailsのERBにおける<%、<%=、<%#、-%>の違いは何ですか?
-
[解決済み】Railsの認証トークンを理解する
-
[解決済み】railsの文字列とtextの違い?
-
[解決済み] belongs_toとhas_oneの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Rails 4 RoutingError: ルートが一致しない[POST]。
-
[解決済み] どのようにrailsでラジオボタンを正しく使用するには?
-
[解決済み] rake db:migrateを使って1ステップだけロールバックする方法
-
[解決済み] DestroyとDeleteの違い
-
[解決済み] Railsで `before_action` での `only:` はどのように機能するのですか?
-
[解決済み] Railsコントローラからホスト名を取得する
-
[解決済み] railsで':remote => true'はどのように動作するのでしょうか?
-
[解決済み] Ruby on rails アプリで ES6 (ES2015) を使用するにはどうすればよいですか?
-
[解決済み] Rails 4で、以前のバージョンのRailsでattr_accessibleを使用していた状況に遭遇した場合、Forbidden Attributes Errorが発生する。
-
[解決済み] 未初期化の定数 "コントローラ名"