Pár věcí vyskočí.
Za prvé, pokud je tento kód volán 2000krát a jeho spuštění trvá 250 ms navíc, je to ~0,125 ms na volání pro převod Arelu na SQL, což není nereálné.
Za druhé, nejsem si jistý vnitřními prvky Range v Ruby, ale lower..upper
může provádět výpočty, jako je velikost rozsahu a další věci, což bude velký výkon.
Vidíte stejný výkon u následujících?
sum = Table.
where(:id => id).
where(:created_at => "BETWEEN ? and ?", lower, upper).
sum(:my_column)