limited_ids))が行われています。実装を見てみましょう。見れば分かるかと思いますが、distinctをつけたクエリを発行することで、絞り込み対象のidリストを取得しているのですが、このdistinctのSQLがスロークエリになりやすいということになります。しただけでは、distinctで対象レコードを絞るということは行われません。アソシエーションだけど、DB上は1対Nな関連であった場合にはレコード数の絞り込みで問題が発生します。した時にレコード数が10に満たなくなるという事が発生しえます。設定している実装を見たりしますが、下記のような実装をしている場合は、たいていDB上は1対Nな関連であると思うので、eager_loadする際には気をつけましょう。切り替えを検討するのが良いと思います。:blogsendpreloadの際に気にしておくこと一方、preloadの際に注意することはIN句が大きくなりすぎないようにすることです。...)といったようなSQLが発行されますが、最初のSQLで得られるblogsのレコード件数が非常に大きいとIN句が膨大に膨らんできます。マネーフォワードではDBに主にMySQLを利用していますが、MySQLでいうと以下の設定値を気にする必要が出てくるかもしれません。max_allowed_packetSQLのサイズが設定値を超えた場合SQLエラーとなるrange_optimizer_max_mem_sizein句が巨大になるに比例してサイズが必要となるメモリで、メモリサイズの設定値を超えるとindexが使われずテーブルフルスキャンとなるpreloadを利用する際は、ページング等で件数絞り込みがされているかどうか意識しましょう。最後に「とりあえずincludes」を見直してもらう機会が増えると幸いです。マネーフォワードでは東京だけでなく、福岡、京都、ベトナムでもエンジニアを募集しています。みなさまごきげんよう。読者になるこのブログについてはてなブログをはじめよう!moneyforwardDevさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。