如果MySQL中的表包含100万条记录,那么如何在任何位置添加列而不会出现停机时间。
答案 0 :(得分:2)
对于非常大的表,MySQL的ALTER TABLE性能会变得非常令人沮丧。 ALTER 语句创建一个新的临时表,即使不严格需要复制数据,也会将现有表中的记录复制到新表中,然后用新表替换旧表。 / p>
假设您有一个包含一百万条记录的表,如果您尝试在其中添加三列,那么它肯定会复制该表三次,这意味着应对300万条记录。
更快的添加列的方法是创建自己的新表,然后选择现有表中的所有行。您可以从现有表创建结构,然后根据需要修改结构,然后在数据中选择。确保以与定义字段相同的顺序选择信息到新表中。
1. CREATE TABLE new_table LIKE table
2. INSERT INTO new_table SELECT * FROM table
3. RENAME TABLE table = old_table, table = new_table;
如果您有外键约束,则可以使用
处理这些外键SET FOREIGN_KEY_CHECKS = 0;