我的ActiveRecord模型使用基于uuid的主键,我想使用find_in_batches
一次加载1000条记录。但是,看到documentation,说它只适用于基于整数的主键。我查看了代码,我看到它只是通过“primary_key ASC
”订购记录。为什么它不适用于基于非整数的主键?只是因为这个订单?我用这种方法尝试了我的模型,它运作正常。
有人能解释一下这个吗?
答案 0 :(得分:7)
猜猜文档不是100%正确。它与增量主键一起正常工作。如果您可以保证任何新记录的uuid大于表中任何现有记录的密钥,它将正常工作。否则,您可能会错过开始批处理后添加的新记录。
在内部,在每一步中,它获取最后一条记录的ID(last_id
),并在下一步选择id大于last_id
的1000条记录。因此,如果应用程序创建具有唯一ID<在处理步骤中last_id
,此记录将被排除在处理之外。