表中有40,000条记录,我想分成4组。 第一种方式:
def prepare_params(div, mod)
results = []
Account.find_each do |account|
next unless account.id % div == mod
results << [account.id, account.name]
end
results
end
secord方式:
def prepare_params(block, block_size)
results = Account.limit(block_size).offset(block_size * (block - 1)).pluck(:id, :name)
end
这两个使用mysql的分组选择方法,哪个更快,哪个更好?
答案 0 :(得分:0)
第二个会更快更好,因为它为数据库提供了模型作业。
首先,您手动执行数据库作业,不使用索引,并使用非专用算法。
当然,如果是1次任务,则没有太大的区别。发髻,如果是常规任务,你可以通过合成测试看到你眼睛的速度提升。
另外,我应该提一下,算法将提供不同的数据划分。第一个将分为1 2 3 4 1 2 3 4 1 2 3 4...
,第二个将提供1 1 1 1 1 1 1 1....
,其中数字是列,请记住它。