sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Consulta ActiveRecord mucho más lenta que SQL directo?

Un par de cosas saltan a la vista.

En primer lugar, si este código se llama 2000 veces y tarda 250 ms adicionales en ejecutarse, eso es ~ 0,125 ms por llamada para convertir el Arel a SQL, lo cual no es poco realista.

En segundo lugar, no estoy seguro de los aspectos internos de Range en Ruby, pero lower..upper puede estar haciendo cálculos como el tamaño del rango y otras cosas, lo que será un gran impacto en el rendimiento.

¿Ves el mismo impacto en el rendimiento con lo siguiente?

sum = Table.
      where(:id => id).
      where(:created_at => "BETWEEN ? and ?", lower, upper).
      sum(:my_column)