批量迭代表

Rails提供了一个名为in_batches可用于分批遍历行。例如:

用户in_batches:10|关系|关系update_allupdated_at:时间现在结束

不幸的是,这种方法的实现方式在查询和内存使用方面都不是很有效。

要解决这个问题,可以包含EachBatch模块放入模型中,然后使用each_batch类方法。例如:

用户<ActiveRecord::基地包括EachBatch结束用户each_batch:10|关系|关系update_allupdated_at:时间现在结束

这将最终产生如下查询:

用户负载(0.7ms)选择“users”。“id”FROM“users”WHERE(“users”)。"id" >= 41654) ORDER BY "users"。"id" ASC限制1偏移量1000(0.7ms) SELECT COUNT(*) FROM "users" WHERE ("users")"id" >= 41654) AND ("users"。"id" < 42687)

此方法的API类似于in_batches,尽管它并不支持所有的论点in_batches支持。你应该经常使用each_batch除非你有一个特定的需求in_batches

Baidu
map