0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【N+1問題】

Posted at

##N+1問題とは
アソシエーションでモデル同士を関連づけている場合に起こる問題のこと。

例えばツイッターのようなアプリでユーザーと投稿が紐付いている場合に
トップページで投稿を一覧表示させる時に各投稿ごとに紐付いているユーザーを検索するために毎回毎回データベースにアクセスしているとアプリのパフォーマンスが下がってしまう。

1万投稿ある場合は1万回データベースにアクセスしなければいけないということ。

この問題のことをN+1問題という。

この問題を解決するためのメソッドが

###includeメソッド
と言われるメソッド。

このメソッドは毎回毎回データベースにアクセスして紐づくデータを検索していたところを、
一回で全データを取得してくれる。

そのため1万投稿あるとしてもデータベースへのアクセス「は一度で済む。

n+1.png

上の画像のようにindexアクションの処理内容の箇所にincludes(:紐づくモデル)とすれば使用できる。

これでツイートなどを一覧表示する際に投稿がいくら増えたとしてもパフォーマンスを下げずに済む。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?