gpt4 book ai didi

ruby-on-rails - ActiveRecord:find_in_batches的替代方法?

转载 作者:行者123 更新时间:2023-12-04 03:58:02 25 4
gpt4 key购买 nike

我有一个加载成千上万个对象的查询,我想通过使用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/

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