PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

ActiveRecord-Abfrage viel langsamer als reines SQL?

Ein paar Dinge springen heraus.

Erstens, wenn dieser Code 2000 Mal aufgerufen wird und zusätzliche 250 ms für die Ausführung benötigt, sind das ~0,125 ms pro Aufruf, um Arel in SQL umzuwandeln, was nicht unrealistisch ist.

Zweitens bin ich mir der Interna von Range in Ruby nicht sicher, aber lower..upper kann Berechnungen wie die Größe des Bereichs und andere Dinge durchführen, die einen großen Leistungseinbruch darstellen.

Sehen Sie den gleichen Leistungseinbruch bei den folgenden?

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