- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个加载成千上万个对象的查询,我想通过使用find_in_batches
来驯服它:Car.includes(:member).where(:engine => "123").find_in_batches(batch_size: 500) ...
根据文档,我不能有一个自定义的排序顺序:http://www.rubydoc.info/docs/rails/4.0.0/ActiveRecord/Batches:find_in_batches
但是,我需要一个自定义的created_at DESC
排序顺序。是否有另一种方法可以像在find_in_batches中那样以块的形式运行此查询,以使一次堆上没有太多对象?
最佳答案
嗯,我一直在想办法解决这个问题(我是问这个问题的人)。这很有意义,因为find_in_batches
不允许您自定义订单,因为可以说您按created_at DESC
排序并指定batch_size为500。第一个循环从1-500开始,第二个循环从501-1000开始,等等。如果在第二个循环发生之前,有人将新记录插入表中?这将放在查询结果的顶部,结果将向左移动1,而第二个循环将重复一次。
您可能会争辩说created_at ASC
会很安全,但是如果您的应用指定了created_at值,则不能保证。
更新:
我为这个问题写了一个 gem :https://github.com/EdmundMai/batched_query
自从使用它以来,我的应用程序的平均内存已减少。我强烈建议任何有类似问题的人来看看!如果您愿意,请贡献力量!
关于ruby-on-rails - ActiveRecord:find_in_batches的替代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30510180/
我的 ActiveRecord 模型使用基于 uuid 的主键,我想使用 find_in_batches一次加载 1000 条记录。然而,看到documentation ,说它只适用于基于整数的主键。
如何在 find_in_batches 中包含 :select 子句。以下抛出错误“Mysql::Error: Unknown column 'users.id' in 'field list': 。
我需要批量处理大量记录。并且每个批处理都应该在它自己的事务中处理。有没有办法把每一个batch包裹在transaction中,同时锁定batch的所有记录? Model.scheduled_now.l
我正在使用 Rails 4.0.0 和 Ruby 2.0.0。我的 Post(如在博客文章中)模型与用户相关联,该用户具有用户的 user_name、first_name、last_name 的组合。
我有一个方法可以接收模型和 result_size 。我尝试用这种方法做的第一件事是: array = model.logs.find_in_batches(:batch_size => result
我有一百万条记录,我想通过 10 个不同的工作人员一次处理 10 万条记录。 文档: "You can control the starting point for the batch process
好的,所以我知道在处理非常大的数据时,我们可以使用 find_in_batches,据我所知,它完成了 Model.all.each 的工作以一种非常快速的方式,效率更高 现在,我有一个非常大的数据要
我想对数据库中的数百万条记录执行批量操作。 根据ActiveRecord的文档,有两种方法可以进行批量操作,分别是#find_in_batches & #in_batches。但是,除了一个返回 En
我在 users 表中有大量行,我需要为其应用预先加载来加载用户的评论。 User.includes(:comments) 由于用户集太大,因此在添加预先加载时会消耗大量内存。 所以在经历了几个解决方
我在 users 表中有大量行,我需要为其应用预先加载来加载用户的评论。 User.includes(:comments) 由于用户集太大,因此在添加预先加载时会消耗大量内存。 所以在经历了几个解决方
我是一名优秀的程序员,十分优秀!