Mysql 添加空TINYINT(1)列超慢

Mysql 添加空TINYINT(1)列超慢,mysql,sql,Mysql,Sql,我有一个37列的表格。这张桌子大约有1百万行。当我尝试添加另一列时: ALTER TABLE main_catalog ADD match_method TINYINT(1) NULL; 这需要非常非常长的时间来添加。为什么这么慢?我能做些什么来改进这一点吗?在一个有很多行的表上修改TABLE通常需要一段时间 一个非常有用的工具,可以在不锁定表数分钟/小时的情况下执行更改表,它通过一些非常酷的技巧,使用表的副本和一些触发器,允许您在不影响用户的情况下执行更改表。在您执行此操作时,是否还使用了该

我有一个37列的表格。这张桌子大约有1百万行。当我尝试添加另一列时:

ALTER TABLE main_catalog ADD match_method TINYINT(1) NULL;

这需要非常非常长的时间来添加。为什么这么慢?我能做些什么来改进这一点吗?

在一个有很多行的表上修改TABLE
通常需要一段时间


一个非常有用的工具,可以在不锁定表数分钟/小时的情况下执行
更改表
,它通过一些非常酷的技巧,使用表的副本和一些触发器,允许您在不影响用户的情况下执行
更改表。

在您执行此操作时,是否还使用了该表?我正在本地运行它,可以确认没有其他mysql进程正在运行。我认为这是因为mysql会在您添加(或删除)时重写整个表和所有索引一个专栏。@David542:一些附加工具:还有Facebook的。@wchiquito这些都很棒,我还没见过+1.太好了,非常感谢。为什么,出于好奇,
ALTER TABLE
的行数不多,却花了这么长时间?@David542它正在复制所有数据并重建所有索引。1M行就足够了,这需要一段时间,特别是如果你有很多索引的话。