Блог :. Как быстро добавить столбец в таблицу с большим числом записей?

Как быстро добавить столбец в таблицу с большим числом записей?

15 Окт, 2014

Представим, что нам вдруг понадобился еще один столбец в таблице. Что ж, это просто:

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

Выходит очень даже бодро.