N+1問題(アソシエーション)

N+1問題とは

アソシエーションでtweetとuserが結びついているとする。

tweetの情報をとって来る場合、userの情報も探して来る必要がある。そのためtweetの情報を持って来るとは別でuserはuserでtweetに紐付いているuser情報を持って来る必要があり、データベースへのアクセス回数が多くなってしまう。そのためアプリのパフォーマンス低下。

 

解決方法

includeメソッドを使う。

これでtweetとuser1回で持って来れる。

includeに.allは含まれているのでall必要ない。

情報処理が多い場合だから使う場所はindexだけで大丈夫だと思う

例)

def index
    @tweets = Tweet.includes(:user)
  end

 

 

#includeしなくてもエラーは起きないため、実感しずらい。