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
-- ---------------------------------------------------文件

相關文章
相關標籤/搜索