N+1問題への対処


N+1問題とは

あるテーブルへのアクセス1回に対して、関連するテーブルが呼び出した分(N回)発行されてしまう状況のことを指し、これが何万回、何十万回と呼び出された時に動作が重くなってしまう問題のこと。

対処法

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

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

自分用メモでした。