ruby-on-rails – 查找更快的ActiveRecord查询(Ruby on Rails)
发布时间:2020-12-17 03:15:21 所属栏目:百科 来源:网络整理
导读:我有一个按特定顺序排序的模型.我的目标是从模型中找到一条记录,其中所有先前记录的特定列的总和等于某个数字. 下面的例子告诉我我需要的东西,但它非常慢,特别是对于一个相当大的表.有没有更快的方法来解决product.id所有以前产品的积分总和= 100000? total
我有一个按特定顺序排序的模型.我的目标是从模型中找到一条记录,其中所有先前记录的特定列的总和等于某个数字.
下面的例子告诉我我需要的东西,但它非常慢,特别是对于一个相当大的表.有没有更快的方法来解决product.id所有以前产品的积分总和= 100000? total_points = 0 find_point_level = 100000 @products = Product.order("id").all @products.each do |product| total_points = product.points + total_points @find_product = product.id break if total_points >= find_point_level end 更新 以下是一些解决方案的一些时间.这通过大约60,000条记录.时间适用于ActiveRecord. 原始示例(上图): 使用find_each的原始示例: 使用总和创建新列: 解决方法
您可以尝试对数据库进行非规范化,并将部分和直接保存在products表中.简单查询where和limit会立即为您返回正确的答案.
您需要创建额外的过滤器,在添加产品时更新单个记录,并在产品被删除或更改点数字段时更新所有产品. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- RNN学习笔记(一)-简介及BPTT RTRL及Hybrid(FP/BPTT)算法
- c# – PrincipalContext.ValidateCredentials总是返回FALSE
- ruby-on-rails-3 – Rails 3.2 – accepts_nested_attribut
- grep与正则表达式
- R文件中找不到xml文件对应的activity
- ruby-on-rails – Friendly_id:slug_candidates没有正确命
- ruby-on-rails-4 – 在Rails中具有嵌套属性的多选文件上载字
- ruby-on-rails – 使用rails消耗Web服务/ apis
- 正则表达式,必须数字和字母组合,且长度为8到15
- ruby-on-rails-3.2 – Capistrano删除资产