【发布时间】:2013-03-27 07:09:11
【问题描述】:
我目前在进行迁移时面临一个问题,尤其是向包含数百万条记录的现有表添加新字段需要很长时间才能完成。所以我想知道有没有什么特别的技巧可以让它快速迁移?
【问题讨论】:
标签: mysql database database-migration rails-migrations
我目前在进行迁移时面临一个问题,尤其是向包含数百万条记录的现有表添加新字段需要很长时间才能完成。所以我想知道有没有什么特别的技巧可以让它快速迁移?
【问题讨论】:
标签: mysql database database-migration rails-migrations
要在不锁定表的情况下执行此操作,您可以创建一个包含正确列的新表,从旧表中选择数据,重命名旧表,重命名新表,删除“旧重命名表”
有些是这样的;
CREATE TABLE `table_new` LIKE `table`;
ALTER TABLE `table_new` ADD COLUMN ...;
ALTER TABLE `table_new` ADD COLUMN ...;
ALTER TABLE `table_new` ADD COLUMN ...;
INSERT INTO `table_new` SELECT x, y, z, 'newcol', 'newcol2', 'newcol3' FROM `table`
RENAME TABLE `table` TO `table_old`;
RENAME TABLE `table_new` TO `table`;
-- DROP TABLE `table_old` -- Might just leave this out for now, who knows...
要考虑的另一件事可能是索引,为插入关闭它并在插入后重新启用它们,这样它们就不必一直重新计算。
【讨论】: