PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Query ActiveRecord molto più lenta dell'SQL diretto?

Un paio di cose saltano fuori.

In primo luogo, se questo codice viene chiamato 2000 volte e richiede 250 ms in più per l'esecuzione, sono circa 0,125 ms per chiamata per convertire l'Arel in SQL, il che non è irrealistico.

In secondo luogo, non sono sicuro degli interni di Range in Ruby, ma lower..upper potrebbe eseguire calcoli come la dimensione dell'intervallo e altre cose, il che sarà un grande successo in termini di prestazioni.

Vedi lo stesso successo in termini di prestazioni con quanto segue?

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