gpt4 book ai didi

ruby - Rails 3 - ActiveRecord,什么更有效率(更新与计数)?

转载 作者:数据小太阳 更新时间:2023-10-29 07:54:05 24 4
gpt4 key购买 nike

好吧,假设我有 2 个不同的模型:

  1. 投票(has_many :votes)
  2. 投票 (belongs_to :poll)

因此,一次投票可以有很多票。目前,我正在显示所有民意调查的列表,包括其总体投票数。


每次有人投票支持投票时,我将使用以下方法更新特定投票的总体 vote_count:

@poll = Poll.update(params[:poll_id], :vote_count => vote_count+1)

要检索我使用的 vote_count: @poll.vote_count 效果很好。

让我们假设我得到了大量的民意调查(在我的数据库中)并且很多人会同时投票给同一个民意调查。


问题:
从轮询表中删除 vote_count 并使用:
@vote_count = Poll.find(params[:poll_id] ).votes.count
而不是检索总体 vote_count
在这种情况下,哪种操作(更新与计数)更有意义?
(我在生产中使用 postgresql)

感谢您的帮助!

最佳答案

您是否考虑过使用 counter cache (see counter_cache option) ? Rails 具有此内置功能来处理关联的所有可能更新以及这将如何影响计数器。

就像在一对多边的表上添加一个名为 #{attribute.pluralize}_count(在你的例子中是 votes_count)的 0 初始化整数列一样简单一个协会(在你的例子中是民意调查)。

然后在关联的另一端将 :counter_cache => true 参数添加到 belongs to 语句。

belongs_to :poll, :counter_cache => true

现在这并不能准确回答您的问题,正确答案将取决于您的数据形状和您配置的索引。如果您希望您的投票表数以百万计,分布在数千个民意调查中,那么请使用计数器缓存,否则只需计算关联就可以了。

关于ruby - Rails 3 - ActiveRecord,什么更有效率(更新与计数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299410/

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