gpt4 book ai didi

mysql - find each in ruby​​ 提高查询速度

转载 作者:太空宇宙 更新时间:2023-11-03 11:57:16 26 4
gpt4 key购买 nike

我想每天从我们的数据库中删除大约 500 万条或更多实际上是过期用户的记录。

我用“find_each”批处理删除了这些记录,但是它只需要1天就可以删除100万条记录,所以删除500万条记录需要5天:(这太耗时了。

有没有什么快速的方法可以安全地从 ruby​​ 数据库中删除数百万条记录。

这是我的代码:

now = Date.today
@expired_users = ExportUser.where("status != ? and DTSysModified >= ? and DTSysModified <= ?", "Active", Date.new(now.year, 04, 1), Date.new(now.year, 04, -1))

@expired_users.find_each(batch_size: 10000) do |user|
user.destroy!
end

最佳答案

delete_all将比您想象的更快地完成工作:

@expired_users.delete_all

使用destroy仅当您要在删除对象时执行所有关联的回调。

关于mysql - find each in ruby​​ 提高查询速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31692641/

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