lengthの場合、SQLの実行結果の行数をカウントするため、COUNTを使ってカウントするcountやsizeの方が処理は軽くなります。 しかし、countはキャッシュを使わないため、毎回COUNTのSQLを実行してしまいます。 行数のカウントだけであれば、キャッシュの有無で判断してくれるsizeを使ったほうが良さそうです。 ちなみに今のRailsはSQLを遅延実行するようになっているので、たとえば以下の様なSQLが2回発行されるようなコードでも、 pry(main)> clients = Client.all Client Load (0.3ms) SELECT `clients`.* FROM `clients` pry(main)> clients.count (0.3ms) SELECT COUNT(*) FROM `clients` => 5 メソッドチェイン
![ActiveRecordのcountとlengthとsize - メグリ株式会社](https://cdn-ak-scissors.b.st-hatena.com/image/square/43a5be1d975eb46605f84647df2aca5515c915c9/height=288;version=1;width=512/https%3A%2F%2Fmgre.co.jp%2Fwp-content%2Fuploads%2F2015%2F02%2FRuby.png)