Railsで開発をしていると最初にぶち当たる問題があります。俗にいうN+1問題です。
これは簡単にいうと一覧表示などでデータを100件表示する場合、100回SQLを発行してしまう問題です。
コンソールログなどを見てると、すぐに気づきます。
たとえばある一覧画面を表示するとこんな感じでSQLのログが表示されます。

これを解決すると以下のような感じになります。
![]()
これはジョインして取得すれば1回で発行できるデータを1レコードづつ取得しているために起こる問題のようです。
で、これは普通に開発を行っていると、気をつけてないとすぐに発生してしまうので、やっかいなのですが、このbulletというgemは、それを画面上に問題ありだよと表示してくます。
こんな感じ

そしてログではこんな感じでどのプログラムの何行目かを表示してくれます。

これはなかなか重宝するgemなので、入れておいて損はないと思います。
導入方法はこれまた簡単で、
group :development, :test do gem 'bullet' end
gemを開発に追加し、bundleします。
※Rails4からbundle installじゃなく、bundleでOKになったようです。
その後、configファイルに以下のように記載します。
config/environments/development.rb
config.after_initialize do Bullet.enable = true Bullet.rails_logger = true Bullet.add_footer = true end
これでRailsを再起動すればOKです。
まだ導入していない方は是非