タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

N+1に関するmh615033891のブックマーク (2)

  • ActiveRecordでN+1 countクエリを潰す方法、あるいはactiverecord-count_loaderの使い方 - k0kubun's blog

    追記:activerecord-count_loaderはactiverecord-precountに変わりました。使い方はこちら。 ActiveRecordでassociationを読むためにN+1クエリが出てしまった場合、 includesなどのメソッドを利用することで発行されるクエリの数を減らすことができる。*1 ところが、それがcountクエリになると、eager loading用のメソッドでクエリの数を減らすことができない。 そこで、N+1 countクエリを潰す方法を調べ、まとめてみた。 ActiveRecordでN+1 countクエリを潰す3つの方法 TweetとFavoriteというモデルがあったとして、Tweetの全カラムと、各TweetのFavoriteの数だけ欲しい場合にN+1 countクエリを潰す方法を示す。 1. counter_cacheを使う class

    ActiveRecordでN+1 countクエリを潰す方法、あるいはactiverecord-count_loaderの使い方 - k0kubun's blog
  • Railsのcounter_cacheを使ったらdeadlockが頻発した - Qiita

    rails (3.2.3) activerecord (3.2.3) mysql2 (0.3.11) ちょっと遡って話をしたほうがいいのかも。 前提:Mysql(InnoDB)でcount(1)はテーブルスキャンが発生して遅い 非力なインスタンスを使っていたので、 数十万件ってレベルからこれがボトルネックになっていた。 そのために、Railsが装備しているcounter_cacheという機能を使う。 ただ、counter_cacheってのは関連するモデルの件数を覚えておくっていう方法で、 テーブルの全レコードの数を保存しておく方法ではない。 それをしたいなら別の実装を。 参考:A Guide to Active Record Associations counter cahceってなんだ 繰り返しになるけど、関連するモデルの件数を覚えておく。 class Order < ActiveRec

    Railsのcounter_cacheを使ったらdeadlockが頻発した - Qiita
  • 1