我必须对我的数据库进行约130万条记录的转换。你知道比这更快的方法吗?
Article.find_each(&:save)
我必须对我的数据库进行约130万条记录的转换。你知道比这更快的方法吗?
Article.find_each(&:save)
update_all
。Post.update_all(:published=>true)
# UPDATE "posts" SET "published" = 't'
Post.where(:published=>true).update_all(:published=>false)
# SQL (3.3ms) UPDATE "posts" SET "published" = 'f' WHERE "posts"."published" = 't'
where
)来挑选出表中共同的行,并对它们执行update_all
。假设在保存记录之前,你想要进行某种形式的属性更新。您可以批量增加记录数(默认值为1000),这个数字取决于您的服务器有多少内存:
Article.find_each(:batch_size => 5000) { |r| r.save }