Для Rails 5 (и, вероятно, Rails 4)
Плохо:
Something.last(5)
потому что:
Something.last(5).class
=> Array
так:
Something.last(50000).count
, скорее всего, взорвет вашу память или навсегда.
Хороший подход:
Something.limit(5).order('id desc')
, потому что:
Something.limit(5).order('id desc').class
=> Image::ActiveRecord_Relation
Something.limit(5).order('id desc').to_sql
=> "SELECT \"somethings\".* FROM \"somethings\" ORDER BY id desc LIMIT 5"
Последнее является неоцененным объемом. Вы можете связать его или преобразовать в массив через .to_a
. Итак:
Something.limit(50000).order('id desc').count
... занимает секунду.