gpt4 book ai didi

ruby-on-rails - Rails,数据结构和性能

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

假设我有一个包含 3 个表的 Rails 应用程序,一个用于问题,一个用于选项(此问题的可能答案),一个用于投票。

目前,在请求有关给定问题的统计信息时,我必须为每个选项进行 SQL 查询,该查询将在“投票”表(大约 150 万个条目)中查找并计算该选项被选中的次数.它很慢,需要 4/5 秒。

我正在考虑直接在问题表中添加一列,用于存储统计数据并在每次有人投票时更新它们。这是好的做法吗?因为这对于已经在投票表中的信息来说似乎是多余的,所以加载速度会更快。或者也许我应该创建另一个表来保存每个问题的这些统计信息?谢谢你的建议!

最佳答案

Rails 提供了一个名为 counter_cache 的功能,它可以满足您的需求

将 counter_cache 选项添加到投票模型

   class Vote < AR::Base
belongs_to :question, :counter_cache => true
end

和下面的迁移

add_column :questions, :votes_count, :integer, :default => 0  

这应该为 votes 表中的每个新记录增加 questions 表中的 votes_count 字段

更多信息:RailsCast

关于ruby-on-rails - Rails,数据结构和性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7482975/

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