我们的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删除一百万条记录,或者有更好的方法来实现这一点。
答案 0 :(得分:1)
您可以使用TRUNCATE而不是DELETE。 TRUNCATE删除孔表并重新创建空。所以这要快得多。 TRUNCATE还重置表
中的AUTO INCREMT字段TRUNCATE TABLE yourTable;