删除rails中的数百万条记录

时间:2016-05-25 09:49:57

标签: mysql ruby-on-rails-4

我们的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删除一百万条记录,或者有更好的方法来实现这一点。

1 个答案:

答案 0 :(得分:1)

您可以使用TRUNCATE而不是DELETE。 TRUNCATE删除孔表并重新创建空。所以这要快得多。 TRUNCATE还重置表

中的AUTO INCREMT字段
TRUNCATE TABLE yourTable;