MySQL ALTER TABLE: ALTER COLUMN vs CHANGE COLUMN vs MODIFY COLUMN

ALTER TABLE 允话使用 ALTER COLUMN 、 CHANGE COLUMN 和 MODIFY COLUMN 修改列,这三种操做是不同的,下面作简单的对比。spa

ALTER COLUMN:设置或删除列的默认值。该操做会直接修改.frm文件而不涉及表数据。此操做很快it

ALTER TABLE  MyTable ALTER COLUMN xxx SET DEFAULT 100;io

--  共 0 行受到影响
--
-- 执行耗时   : 0.011 sec
-- 传送时间   : 1.037 sec
-- 总耗时      : 1.048 sec
-- ---------------------------------------------------语法

CHANGE COLUMN: 列的重命名、列类型的变动以及列位置的移动(应该也会引发表的重建,很是慢)
语法:CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]命名

 ALTER TABLE  MyTable CHANGE COLUMN xxx xxx INT FIRST
--  共 2000000 行受到影响
--
-- 执行耗时   : 12.037 sec
-- 传送时间   : 1.074 sec
-- 总耗时      : 13.012 sec
-- ---------------------------------------------------数据

MODIFY COLUMN:除了列的重命名以外,他干的活和CHANGE COLUMN是同样的(会引发表的重建,很是慢)移动

 ALTER TABLE  MyTable MODIFY COLUMN xxx  INT NOT NULL DEFAULT 101;
--  共 2000000 行受到影响
--
-- 执行耗时   : 13.066 sec
-- 传送时间   : 0.001 sec
-- 总耗时      : 13.067 sec
-- ---------------------------------------------------文件

相关文章
相关标签/搜索