Как быстро добавить столбец в таблицу с большим числом записей?
Представим, что нам вдруг понадобился еще один столбец в таблице. Что ж, это просто:
ALTER TABLE table ADD newfield VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;
Но когда речь идет о большом количестве записей в таблице, то этот запрос может работать крайне долго. Для этого можно попробовать создать рядом таблицу с такой же структурой, добавить туда необходимый столбец, затем сделать дамп предыдущей таблицы, удалить ее, переименовать таблицу с новой структурой на старое название и восстановить из дампа все данные.
CREATE TABLE table1 LIKE table; ALTER TABLE table1 ADD newfield VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL; mysqldump -c --no-create-info --skip-extended-insert --no-create-db -uroot -p database table > table.sql DROP TABLE table; RENAME TABLE table1 TO table; mysql -uroot -p database < table.sql
Выходит очень даже бодро.