PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zapytanie ActiveRecord znacznie wolniej niż prosty SQL?

Kilka rzeczy wyskakuje.

Po pierwsze, jeśli ten kod jest wywoływany 2000 razy, a jego uruchomienie zajmuje dodatkowe 250 ms, to jest to ~0,125 ms na wywołanie, aby przekonwertować Arel na SQL, co nie jest nierealne.

Po drugie, nie jestem pewien wewnętrznych elementów Range w Ruby, ale lower..upper może wykonywać obliczenia, takie jak rozmiar zasięgu i inne rzeczy, które będą dużym hitem wydajności.

Czy widzisz ten sam spadek wydajności z następującymi?

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Niestandardowy komunikat o błędzie dla ograniczenia listy Postgresql CHECK IN

  2. Wybieranie kolumn za pomocą DISTINCT w PostgreSQL

  3. PostgreSql , wyodrębnij obiekty schematu DDL do oddzielnego pliku SQL

  4. Entity Framework ObjectContext -> nieprzetworzone wywołania SQL do natywnego systemu DBMS

  5. Wybór średniej rekordów pogrupowanych co 5 minut