首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql大表删除

mysql大表删除
EN

Stack Overflow用户
提问于 2020-10-08 11:49:45
回答 2查看 411关注 0票数 1

我使用的是mysql数据库版本5,我有一个表,它有大约500.000.000个rows.The表,如果我信任phpmyadmin,它可以回收50 if的磁盘空间。我喜欢删除90%的行来回收磁盘空间。

什么是最好的选择?

  • 我可以使用脚本删除行并运行“优化表”。这张桌子会锁上,但我不知道需要多长时间?有什么经验吗?
  • 我可以删除这个表,创建一个新的表,然后手动导入10%。这个尺寸的落地桌需要多长时间?

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-08 11:52:43

由于要删除表中的大多数行,我建议将要保留的行移到临时表,截断表,然后重新导入。这仍然需要表上的停机时间(也就是说,在操作进行时不应该对表进行读或写),但是应该比逐行删除快一个数量级。

代码语言:javascript
复制
create table tmptable as select * from mytable where ...;
truncate table mytable;
insert into mytable select * from tmptable;
drop table tmptable;

显然,truncate table会删除并重新创建表,这将回收空间。对于您的问题,文档有一些有趣的要点,例如:

截断操作拖放并重新创建表,这比逐个删除行要快得多,特别是对于大型表。

票数 1
EN

Stack Overflow用户

发布于 2020-10-08 11:53:35

最快的方法是

  1. 将想要的文件复制到临时表中。
  2. TRUNCATe表
  3. 将它们从临时表中复制回来
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64261910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档