gpt4 book ai didi

ruby-on-rails - Rails counter_cache for Model.count 没有任何关联,为了让SELECT COUNT(*)更快

转载 作者:行者123 更新时间:2023-12-03 09:24:35 24 4
gpt4 key购买 nike

我正在使用 Model.count 对我的一个模型中的行进行总计我有点担心性能,因为最终这个模型会变得非常大,因此,SELECT COUNT (*)非常慢。
有没有办法使用counter_cache没有 :belongs_to关系?或者另一种性能友好的计算行数的方法?我想制作另一个模型,只是一个我存储这样的计算的模型,但不确定这是最好的方法。

最佳答案

甚至比制作 Cache 更琐碎模型只是使用 Rails.cache .

Rails.cache.read("elephant_count") #=> nil
Rails.cache.write("elephant_count", 1) #=> true
Rails.cache.read("elephant_count") #=> 1

Rails 默认使用文件存储(tmp/cache)。

然后你可以将 Rails.cache.write 增量和减量放入模型的 after_createafter_destroy Hook ,并覆盖 Model.size调用 Rails.cache.read。

您可以在 Rails 首次初始化时通过放置一个名为 initialize_cache.rb 的文件来初始化缓存。在配置/初始值设定项中包含:
Rails.cache.write('elephant_count', 0) if Rails.cache.read('elephant_count').nil?

关于ruby-on-rails - Rails counter_cache for Model.count 没有任何关联,为了让SELECT COUNT(*)更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5972280/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com