我使用的是mysql数据库版本5,我有一个表,它有大约500.000.000个rows.The表,如果我信任phpmyadmin,它可以回收50 if的磁盘空间。我喜欢删除90%的行来回收磁盘空间。
什么是最好的选择?
谢谢!
发布于 2020-10-08 11:52:43
由于要删除表中的大多数行,我建议将要保留的行移到临时表,截断表,然后重新导入。这仍然需要表上的停机时间(也就是说,在操作进行时不应该对表进行读或写),但是应该比逐行删除快一个数量级。
create table tmptable as select * from mytable where ...;
truncate table mytable;
insert into mytable select * from tmptable;
drop table tmptable;显然,truncate table会删除并重新创建表,这将回收空间。对于您的问题,文档有一些有趣的要点,例如:
截断操作拖放并重新创建表,这比逐个删除行要快得多,特别是对于大型表。
发布于 2020-10-08 11:53:35
最快的方法是
https://stackoverflow.com/questions/64261910
复制相似问题