Ruby on Railsをモデルでidごとのcountを取るような場合に発生しがちなN+1 countクエリを高速化するRubyGems『activerecord-precount』を紹介します。
🗻 概要
次のようなN+1カウントのクエリが発生する場合:
Tweet.all.each do |tweet| |
precountメソッドを使うことで、2つのSQLでid単位のcountを取れます。
Tweet.all.precount(:favorites).each do |tweet| |
Joinも合わせて行いたい場合はeager_countメソッドを使うことで、1つのSQLでcountをとれます。
Tweet.all.eager_count(:favorites).each do |tweet| |
🎳 インストール手順
Gemfileに次の内容を追加してbundle installを実行します。
# N+1 count query killer for ActiveRecord |
