Rails最快的方式来获取表记录计数

new*_*cpp 4 postgresql activerecord ruby-on-rails

userPostgresql数据库中有一个表,如果运行User.count,它需要150ms获得结果.对我们来说太慢了.理想情况下,返回结果需要不到10毫秒.有没有办法在模型级别缓存sql结果?就像是

def self.total_count
  User.count.cached # that's my imagination
end
Run Code Online (Sandbox Code Playgroud)

Mic*_*tor 8

在我看来,有几种方法可以解决这个问题 -

  1. 您可以使用另一个表,通过在添加/删除用户时或以频繁的时间间隔递增计数来存储用户总数的计数.
  2. 如果你的表非常大并且准确性不是最重要的,你也可以查看Postgres的COUNT ESTIMATE查询.

    SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = 'users';