##N+1問題とは
アソシエーションでモデル同士を関連づけている場合に起こる問題のこと。
例えばツイッターのようなアプリでユーザーと投稿が紐付いている場合に
トップページで投稿を一覧表示させる時に各投稿ごとに紐付いているユーザーを検索するために毎回毎回データベースにアクセスしているとアプリのパフォーマンスが下がってしまう。
1万投稿ある場合は1万回データベースにアクセスしなければいけないということ。
この問題のことをN+1問題という。
この問題を解決するためのメソッドが
###includeメソッド
と言われるメソッド。
このメソッドは毎回毎回データベースにアクセスして紐づくデータを検索していたところを、
一回で全データを取得してくれる。
そのため1万投稿あるとしてもデータベースへのアクセス「は一度で済む。
上の画像のようにindexアクションの処理内容の箇所にincludes(:紐づくモデル)とすれば使用できる。
これでツイートなどを一覧表示する際に投稿がいくら増えたとしてもパフォーマンスを下げずに済む。