mysql - Mysql 删除数据库内容最快的方法是什么?

标签 mysql freebsd

mysql删除freebsd数据库内容最快的方法?请帮忙 我试图从 navicat 中删除(400,000 多行), 但在一个小时内...只有 100,000 个被删除 我没有 phpmyadmin

最佳答案

删除表中的所有内容:

TRUNCATE TABLE table_you_want_to_nuke

要删除某些行,您有两种选择:

  1. 请按照以下步骤操作:

    • 使用 CREATE TABLE the_temp_table LIKE current_table 创建一个临时表
    • 删除临时表上的所有索引。
    • 使用 INSERT INTO the_temp_table SELECT * FROM current_table WHERE ...
    • 复制您想要保留的记录
    • TRUNCATE TABLE current_table
    • INSERT INTO current_table SELECT * FROM the_temp_table
    • 要加快此选项的速度,您可能需要在最终 INSERT INTO 之前删除 current_table 中的所有索引,然后在 INSERT 之后重新创建它们>。 MySQL 索引现有数据的速度比动态索引快得多。

  2. 您当前正在尝试的选项:DELETE FROM your_table WHERE whatever_condition。您可能需要使用 WHERE 条件或 LIMIT 将其分成多个 block ,这样您就可以对其进行批处理,而不会永远使服务器停滞不前。

哪个更好/更快取决于很多因素,主要是删除记录与保留记录的比率以及涉及的索引数量。一如既往,在实时数据库上执行此操作之前仔细测试,因为DELETETRUNCATE永久 销毁数据。

关于mysql - Mysql 删除数据库内容最快的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22440620/

相关文章:

mysql - 有什么方法可以检查每个表是否在 MYSQL 5.5 中设置了 innodb_file_per_table?

bash - 使用 sed 插入换行符 (\n)

installation - FreeBSD 上的 OpenJDK : "Given reserved space must have been reserved already"

c - 强制解锁由不同线程锁定的互斥体

mysql - 为用户组建模的正确方法

php - 7 fetch_assoc 一会儿 fetch_assoc

glassfish - 如何列出 glassfish 实例?

passwords - 在 FreeBSD 中使用一条命令更改密码

php 显示 unicode 转义字符

php - 如何在 PHP/MySQL 中生成夹具列表?