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回に対して、関連するテーブルが呼び出した分(N回)発行されてしまう状況のことを指し、これが何万回、何十万回と呼び出された時に動作が重くなってしまう問題のこと。

対処法

includesメソッドを使用することで、あるテーブルにアクセスする際に、同時に関連するテーブルのレコードを取得し、発行するSQLを少なくすることができる。
includesメソッドは、1つ目のテーブルのカラムを優先して、2つ目のテーブルを結合する。その際に2つのテーブルのどちらにしか存在しないテーブルも含める。(左外部結合

ちなみに反対にテーブル同士を結合する時に両方のテーブルで結合条件がマッチするレコードのみを取得する方法が内部結合になる。

スクリーンショット 2020-01-29 20.33.20.png

自分用メモでした。

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?