Tengo una tabla de user en la base de datos Postgresql , si ejecuto User.count , se necesitan 150ms para obtener el resultado. Es demasiado lento para nosotros. Idealmente, tardará menos de 10 ms en devolverme el resultado. ¿Hay alguna forma de almacenar en caché el resultado de sql en el nivel del modelo ? Algo como
def self.total_count User.count.cached # that's my imagination endEn mi opinión, hay varias maneras de hacerlo:
Si su tabla es extremadamente grande y la precisión no es lo más importante, también consulte la consulta COUNT ESTIMATE de Postgres.
SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = 'users';
Deberías buscar en counter_cache. Funcionará muy bien si su usuario pertenece_a otro modelo http://guides.rubyonrails.org/association_basics.html