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

时间:2014-03-16 18:00:00

标签: mysql freebsd

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

1 个答案:

答案 0 :(得分:1)

删除表格中的所有内容:

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
    • 要加快此选项,您可能希望在最终current_table之前删除INSERT INTO之前的所有索引,然后在INSERT之后重新创建它们。 MySQL在索引现有数据方面要比在动态索引时快得多。

  2. 您当前正在尝试的选项:DELETE FROM your_table WHERE whatever_condition。您可能需要使用WHERE条件或LIMIT将其分解为块,这样您就可以对其进行批处理,而不是永远陷入服务器。

  3. 哪个更好/更快取决于很多事情,主要是已删除记录与保留记录的比率以及所涉及的索引数量。与往常一样,仔细测试,然后在实时数据库上执行此操作,因为DELETETRUNCATE永久销毁数据。