mysql - 删除 rails 中的数百万条记录

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

最佳答案

您可以使用 TRUNCATE 而不是 DELETE。 TRUNCATE 删除整个表并重新创建一个空表。所以这要快得多。 TRUNCATE 还会重置表中 AUTO INCREMENT 字段的值

TRUNCATE TABLE yourTable;

关于mysql - 删除 rails 中的数百万条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37433503/

相关文章:

mysql - 如何在mongodb应用程序中检查用户凭据

ruby - 将引导字形添加到 Rails 中的按钮

ruby - Rails 4. 将表单信息从一个 Controller (无模型)移动到另一个(无模型)以便将参数传递给方法

mysql - 将MYSQL与asp.net core连接时出错

mysql - InnoDB 上的一个简单的 INSERT 查询花费太多

mysql - 将 case 语句添加到 SQL 查询

mysql - 在 SQL 中具有特定条件的字符串开头添加前导零

ruby-on-rails - 我无法访问 Rails 控制台

MySQL - 搜索特定值的多个模式

ruby-on-rails - 多个:many through relationship如何使用create方法