MySQL alter table更改或在更改列大小时修改

MySQL alter table更改或在更改列大小时修改,mysql,Mysql,我有一张大桌子(10GB+)。 一些开发人员错误地添加了一个bigint(250)列。 我想把它带回bigint(8) 当我使用MODIFY语句时,它比使用CHANGE要快得多 alter table persons modify PersonId bigint(8) auto_increment; alter table PersonId modify PersonId bigint(8)自动递增; 快于 alter table persons change PersonId PersonId

我有一张大桌子(10GB+)。 一些开发人员错误地添加了一个bigint(250)列。 我想把它带回bigint(8)

当我使用MODIFY语句时,它比使用CHANGE要快得多

alter table persons modify PersonId bigint(8) auto_increment; alter table PersonId modify PersonId bigint(8)自动递增; 快于

alter table persons change PersonId PersonId bigint(8) auto_increment; alter table PersonId change PersonId bigint(8)自动递增; 我的观点是,更改是重建表,而不是修改。
但在这种情况下,modify(引擎盖下)到底在做什么

MODIFY将不会尝试重命名该列。即使目标名称与当前名称相同,CHANGE也会尝试重命名,这很可能是它需要更多时间的原因。

MODIFY不会尝试重命名列。即使目标名称与当前名称相同,CHANGE也会尝试重命名,这很可能是它需要更多时间的原因。

bigint(250)
bigin(8)
对数据没有任何更改:这只是表示的提示,存储需求等是相同的,因为它仍然是
bigint
,因此,数据不需要更改,只需要对表本身进行一些奇特的定义,这应该非常快。
bigint(250)
bigin(8)
对数据没有任何更改:它只是表示的提示,存储需求等是相同的,因为它仍然是
bigint
,因此数据不需要更改,只是表格本身的一些奇特的定义,应该非常快。