在MYSQL中插入新列需要太长时间

Imr*_*hsh 4 mysql

我们有一个庞大的数据库,插入新专栏需要太长时间.无论如何要加快速度?

Mic*_*ior 6

不幸的是,你可能做的不多.插入新列时,MySQL会复制表并在那里插入新数据.您可能会发现它更快

CREATE TABLE new_table LIKE old_table;
ALTER TABLE new_table ADD COLUMN (column definition);
INSERT INTO new_table(old columns) SELECT * FROM old_table;
RENAME table old_table TO tmp, new_table TO old_table;
DROP TABLE tmp;
Run Code Online (Sandbox Code Playgroud)

这不是我的经历,但我听说其他人都取得了成功.您还可以尝试new_table在插入之前禁用索引,然后重新启用.请注意,在这种情况下,您需要注意不要丢失old_table在转换期间可能插入的任何数据.

或者,如果您的关注在更改期间影响用户,请检查pt-online-schema-change哪些方法可以巧妙地使用触发器来执行ALTER TABLE语句,同时保持表的可修改性.(请注意,这不会加快过程.)