gpt4 book ai didi

mysql - 查询记录的最佳方式

转载 作者:行者123 更新时间:2023-11-29 08:22:30 24 4
gpt4 key购买 nike

我的 Rails 应用程序的性能出现问题。这可能是数据库结构不佳造成的。并且该页面被用户频繁浏览,考虑到记录为5k+。

Current System:

Model:
person has_many payment

Controller:
@total_payments = 0
person.each do |p|
@total_payments += p.payments.map(&:value).sum
end

View:
@total_payments
  • 使用单独的数据库作为计数器是否比搜索和统计记录更好?
  • 您推荐/建议什么数据库结构?

最佳答案

假设 persons 是 Activerecord 关系

persons.joins(:payments).sum(:value)

如果persons已经是一个数组(不太推荐)

Payment.where(:person_id => persons.map(&:id)).sum(:value)

如果总付款是此 View 中关联付款的唯一属性。那么最快的方法是在 person 表中将 total_ payments 设为一个字段。每当进行关联的付款时更新它。类似于计数器缓存的东西。那么您根本不需要为付款进行 sql 查询。

关于mysql - 查询记录的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18951312/

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