タグ

eager_loadに関するtakaesuのブックマーク (2)

  • Rails: JOINすべきかどうか、それが問題だ — #includesの振舞いを理解する(翻訳)

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: To join or not to join? An act of #includes 原文 公開日: 2017/08/07 著者: Tiago Farias 原文ではシェークスピアの古典劇『ハムレット』のセリフが多数引用されています。引用されたセリフのリンクをマウスオーバーするとシェークスピアの原文がポップアップします。 actの基的な意味は「演技(する)」「(舞台の)場面」であり、タイトルはこれにかかっています。 2017/09/25: 初版公開 2021/09/22: 更新 訳注 k0kubunさんの以下の記事も合わせて読むことをおすすめします。Rails 5以降は#left_outer_joins(またはエイリアスの#left_joins)が使えます。また、#includesがActiveRecord::Baseを生成す

    Rails: JOINすべきかどうか、それが問題だ — #includesの振舞いを理解する(翻訳)
    takaesu
    takaesu 2023/03/11
    どちらも併用して良い
  • has_manyをeager_load/includesするときの注意点 - Qiita

    eager_loadはJOINしてキャッシュもしてくれるActiveRecordのメソッドだが、この仕様を正しくイメージできてなかったのではまった. has_manyに対してIN句検索したときに一部のhas_manyデータのみがキャッシュされて意図しない結果となった. joinsではキャッシュされないためこの問題は起こらないが、当然キャッシュされないので後から追加クエリが発行される. includesは条件によってeager_loadと同じ動きをするため今回の用途だと同じ問題が発生する. ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い 再現 超簡単なhas_many関連を作成する. class User < ActiveRecord::Base has_many :roles end class Role < ActiveRecord::

    has_manyをeager_load/includesするときの注意点 - Qiita
    takaesu
    takaesu 2015/10/16
    joinsを使ってN+1を回避する
  • 1