You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
追記: 2017/09/06 少しAPIが冗長なもののActiveRecordへのモンキーパッチが少ないバージョン activerecord-precounter というのを作りました。こちらの方がバグりにくいはずなので、現在はactiverecord-precounterの方を使うことが推奨されます。 github.com 概要 N+1 countクエリを最大11.7倍速くできるactiverecord-precountというgemを作った。 *1 k0kubun/activerecord-precount N+1 countクエリ Tweet.all.each do |tweet| p tweet.favorites.count end # SELECT `tweets`.* FROM `tweets` # SELECT COUNT(*) FROM `favorites` WHERE
RailsでのDBへのクエリの組み立ては常にN+1問題との戦いですよね。N+1が発生すると大幅にパフォーマンスがダウンしてしまうので、適切な事前ロードをいかに行えるかがプログラマの腕の見せどころになります。 でもそれって本質でしょうか? DBにクエリを投げる部分の実装の詳細なのでは? クエリが空気読めばいいじゃん!という「Goldiloader」 「それって実装の本質じゃないよね。詳細だよね。それはクエリを投げる部分(ActiveRecord)が空気読めばいいんじゃね?」 そんな思想で現れたGemがGoldiloaderです。Gemfileに加えるだけで勝手にEager Loadingしてくれるようになります。 このGemをbundleせずに以下のコードを叩くと、eachでpostsが呼ばれるたびにロードを繰り返してしまうのですが・・・ > blogs = Blogs.limit(5).t
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く