加快mysql alter table速度

使用alter table tablename modify 语句会将表重建、数据导入

使用alter table tablename alter column 则只会修改表信息,不会有上述操作

对于table 列的alter操作总共有三种方法 包括alter、change、modify,对于列修改的粒度依次增大,如下为参考说明,参考链接

对于alter table的操作还有一种比较野的方法,不推荐使用,就是直接修改.frm文件,修改的方式是直接新建一个表明相同的table,之后备份原有的frm文件,并替换之,但是这种方法只能用于如下修改:

1.移除一个列的AUTO_INCREMENT属性

2.增加,移除或者修改enum&set变量

使用该方法时需要使用flush tables with read lock将所有表关闭,以免操作发生错误破坏数据

ALTER COLUMN



Used to set or remove the default value for a column. Example:
ALTER TABLE MyTable ALTER COLUMN foo SET DEFAULT ‘bar’;
ALTER TABLE MyTable ALTER COLUMN foo DROP DEFAULT;

CHANGE COLUMN



Used to rename a column, change its datatype, or move it within the schema. Example:
ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL FIRST;
ALTER TABLE MyTable CHANGE COLUMN foo bar VARCHAR(32) NOT NULL AFTER baz;

MODIFY COLUMN



Used to do everything CHANGE COLUMN can, but without renaming the column. Example:
ALTER TABLE MyTable MODIFY COLUMN foo VARCHAR(32) NOT NULL AFTER baz;

转载请注明来源链接 http://just4fun.im/2016/08/13/e5-8a-a0-e5-bf-abmysql-alter-table-e9-80-9f-e5-ba-a6/ 尊重知识,谢谢:)