我在user
数据库中有一个Postgresql
表,如果运行User.count
,则需要150ms
才能获得结果。对我们来说太慢了。理想情况下,返回结果需要不到10毫秒。有没有办法在模型级别缓存sql结果?像
def self.total_count
User.count.cached # that's my imagination
end
答案 0 :(得分:8)
在我看来,有几种方法可以解决这个问题 -
如果你的桌子非常大而精确度不是最重要的,你也可以看看Postgres' COUNT ESTIMATE查询。
SELECT reltuples AS approximate_row_count FROM pg_class WHERE relname = 'users';
答案 1 :(得分:0)
您应该查看counter_cache。如果您的用户属于另一个模型http://guides.rubyonrails.org/association_basics.html
,它会很有用