joins, eager_load, preload
絞り込みあり、joinしたテーブルの情報を使わない
絞り込みするのでpreloadはつかえない。
処理時間
- joinsで連結先テーブルの情報を含まない小さめのオブジェクトを扱う
- eager_loadでは連結先テーブルの情報を含む大きめのオブジェクトを扱う
- => joinsの方が処理時間が短い
メモリ使用量
- joinsで連結先テーブルの情報を含まない小さめのオブジェクトを扱う
- eager_loadでは連結先テーブルの情報を含む大きめのオブジェクトを扱う
- => joinsの方がメモリ使用量が少ない
結論:「絞り込みあり、joinしたテーブルの情報を使わない」場合はjoinsがよい!
絞り込みなし、joinしたテーブルの情報を使う
処理時間
メモリ使用量
- => なぜか分からないがメモリ使用量はpreload < joins < eager_loadの順となる
結論:「絞り込みなし、joinしたテーブルの情報を使う」場合はpreloadがよい!
絞り込みあり、joinしたテーブルの情報を使う
絞り込みするのでpreloadはつかえない。
処理時間
メモリ使用量
結論:「絞り込みあり、joinしたテーブルの情報を使う」場合はeager_loadがよい!