【发布时间】:2011-05-08 13:12:49
【问题描述】:
每当我尝试清空一张大桌子时,使用
truncate table the_huge_table;
然后等待几分钟,我看不出有任何反应。 另一方面,我不想删除整个表,因为不确定如何重新生成它,所以想知道轻松清空这个怪物的最佳方法是什么?
【问题讨论】:
-
不是题外话,它很容易用代码表达,并且与编程有关。
标签: mysql command-line
每当我尝试清空一张大桌子时,使用
truncate table the_huge_table;
然后等待几分钟,我看不出有任何反应。 另一方面,我不想删除整个表,因为不确定如何重新生成它,所以想知道轻松清空这个怪物的最佳方法是什么?
【问题讨论】:
标签: mysql command-line
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;
【讨论】:
cloned 关键字。这对我将来非常有用。
cloned 不是关键字请不要混淆。 jeffs answer中的所有关键字都大写
CREATE TABLE LIKE
mysqldump --no-data dbname tablename > /tmp/backup.sql
mysql -e 'drop table tablename' dbname
mysql dbname < /tmp/backup.sql
【讨论】:
将结构复制到一个新的空表中。
删除旧表。
重命名空副本。
CREATE TABLE copy_huge_table LIKE the_huge_table;
DROP TABLE the_huge_table;
RENAME TABLE copy_huge_table TO the_huge_table;
【讨论】: