【问题标题】:How to empty a very large mysql table?如何清空一个非常大的mysql表?
【发布时间】:2011-05-08 13:12:49
【问题描述】:

每当我尝试清空一张大桌子时,使用

truncate table the_huge_table;

然后等待几分钟,我看不出有任何反应。 另一方面,我不想删除整个表,因为不确定如何重新生成它,所以想知道轻松清空这个怪物的最佳方法是什么?

【问题讨论】:

  • 不是题外话,它很容易用代码表达,并且与编程有关。

标签: mysql command-line


【解决方案1】:

SHOW CREATE TABLE the_huge_table 将告诉你如何在删除表时重新创建它。

另一种选择是克隆表结构:

CREATE TABLE cloned LIKE the_huge_table;
RENAME TABLE the_huge_table TO drop_me, cloned TO the_huge_table;
DROP TABLE drop_me;

【讨论】:

  • +1 不知道 cloned 关键字。这对我将来非常有用。
  • @Michael, cloned 不是关键字请不要混淆。 jeffs answer中的所有关键字都大写
  • @Johan 是的,当我开始寻找文档时,我发现了这一点。反正我不知道CREATE TABLE LIKE
【解决方案2】:
mysqldump --no-data dbname tablename > /tmp/backup.sql
mysql -e 'drop table tablename' dbname
mysql dbname < /tmp/backup.sql

【讨论】:

    【解决方案3】:

    将结构复制到一个新的空表中。
    删除旧表。
    重命名空副本。

    CREATE TABLE copy_huge_table LIKE the_huge_table;
    DROP TABLE the_huge_table;
    RENAME TABLE copy_huge_table TO the_huge_table;
    

    【讨论】:

    • Johan,你需要在第二行和第三行添加TABLE。
    猜你喜欢
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    相关资源
    最近更新 更多