Изскачат няколко неща.
Първо, ако този код се извиква 2000 пъти и отнема 250 ms допълнително, за да се изпълни, това е ~0,125 ms на повикване за преобразуване на Arel в SQL, което не е нереалистично.
Второ, не съм сигурен за вътрешността на Range в Ruby, но lower..upper
може да прави изчисления като размера на диапазона и други неща, което ще бъде голям удар в производителността.
Виждате ли същото постижение на ефективността със следното?
sum = Table.
where(:id => id).
where(:created_at => "BETWEEN ? and ?", lower, upper).
sum(:my_column)