我们的 RoR 4 应用程序有数百万条需要定期删除的记录。目前,删除是作为后台作业进行的:
while fruit.apples.count > 0
# create the sql query to delete 1000 feeds from the channel
sql = "DELETE FROM apples WHERE fruit_id=#{fruit_id} LIMIT 1000"
# execute the sql query
ActiveRecord::Base.connection.execute(sql)
# wait a bit before the next delete
sleep 0.1
end
因为我每隔几秒就做一次计数,它已经增加了 mysql 服务器的 cpu 时间。所以想知道我是否可以使用 delete_all/destroy_all 删除一百万条记录,或者是否有更好的方法来实现这一点。
最佳答案
您可以使用 TRUNCATE 而不是 DELETE。 TRUNCATE 删除整个表并重新创建一个空表。所以这要快得多。 TRUNCATE 还会重置表中 AUTO INCREMENT 字段的值
TRUNCATE TABLE yourTable;
关于mysql - 删除 rails 中的数百万条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37433503/