[英]deleting millions of records in rails
我们的 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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.