Beberapa hal melompat keluar.
Pertama, jika kode ini dipanggil 2000 kali dan membutuhkan 250 md ekstra untuk dijalankan, itu berarti ~0,125 md per panggilan untuk mengonversi Arel ke SQL, yang bukannya tidak realistis.
Kedua, saya tidak yakin dengan internal Range di Ruby, tetapi lower..upper
mungkin melakukan perhitungan seperti ukuran jangkauan dan hal-hal lain, yang akan menjadi hit kinerja besar.
Apakah Anda melihat kinerja yang sama dengan yang berikut ini?
sum = Table.
where(:id => id).
where(:created_at => "BETWEEN ? and ?", lower, upper).
sum(:my_column)