mysql删除freebsd数据库内容最快的方法?请帮忙 我试图从 navicat 中删除(400,000 多行), 但在一个小时内...只有 100,000 个被删除 我没有 phpmyadmin
最佳答案
删除表中的所有内容:
TRUNCATE TABLE table_you_want_to_nuke
要删除某些行,您有两种选择:
请按照以下步骤操作:
- 使用
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 索引现有数据的速度比动态索引快得多。
- 使用
您当前正在尝试的选项:
DELETE FROM your_table WHERE whatever_condition
。您可能需要使用WHERE
条件或LIMIT
将其分成多个 block ,这样您就可以对其进行批处理,而不会永远使服务器停滞不前。
哪个更好/更快取决于很多因素,主要是删除记录与保留记录的比率以及涉及的索引数量。一如既往,在实时数据库上执行此操作之前仔细测试,因为DELETE
和TRUNCATE
将永久 销毁数据。
关于mysql - Mysql 删除数据库内容最快的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22440620/