Quelques choses sautent aux yeux.
Premièrement, si ce code est appelé 2000 fois et prend 250 ms supplémentaires pour s'exécuter, cela représente environ 0,125 ms par appel pour convertir l'Arel en SQL, ce qui n'est pas irréaliste.
Deuxièmement, je ne suis pas sûr des composants internes de Range dans Ruby, mais lower..upper
peut effectuer des calculs tels que la taille de la plage et d'autres choses, ce qui aura un impact important sur les performances.
Constatez-vous les mêmes performances avec les éléments suivants ?
sum = Table.
where(:id => id).
where(:created_at => "BETWEEN ? and ?", lower, upper).
sum(:my_column)