ブックマーク / zenn.dev/iloveomelette (1)

  • 【Rails】N+1問題はincludesで万事OKと思っていた。 �

    こんにちは。Webエンジニアとなって2週間経ったオクトと申します。 記事では、N+1問題をincludesさえ付けておけば完璧じゃない?と思っている方を対象に他にもやり方はあるんだよ、もっと良い方法があるよ、ということをシャアしていきます。 かくいう私も上記の対象に先ほどまで入ってました。 これはそんな私向けの記事でもあるんですね。 バリバリにRailsを書いてきた人には、当たり前に感じると思いますが、 ご指摘箇所がありましたらご教授いただけますと幸いです。 前提 Ruby 3.1.1 Rails 6.1.4.6 テーブル構造は以下の通りです。 includesの他に何があるの? 「ねぇねぇ、先に何があるか教えてよ」という声が聞こえてきたので、先に伝えます。 includesの他に主に2つの方法で解消することができます。 クエリ数 関連先での絞り込み 関連先の情報

    【Rails】N+1問題はincludesで万事OKと思っていた。 �
    carolina04
    carolina04 2022/11/09
    “has_many-belongs to の関係であれば、preloadを使用してクエリ発行の負担を減らす。 has_one-belongs to の関係であれば、eager_loadを使用して1クエリでまとめて取得する。 関連先で条件を絞り込みたいときはeager_loadを使用する”
  • 1