Et par ting springer ud.
For det første, hvis denne kode bliver kaldt 2000 gange og tager 250 ms ekstra at køre, er det ~0,125 ms pr. kald for at konvertere Arel til SQL, hvilket ikke er urealistisk.
For det andet er jeg ikke sikker på det indre af Range i Ruby, men lower..upper
laver muligvis beregninger såsom størrelsen af rækkevidden og andre ting, som vil være et stort præstationshit.
Ser du det samme præstationshit med følgende?
sum = Table.
where(:id => id).
where(:created_at => "BETWEEN ? and ?", lower, upper).
sum(:my_column)