Mysql
 sql >> Base de données >  >> RDS >> Mysql

ALTER TABLE ADD COLUMN prend beaucoup de temps

Votre ALTER TABLE implique que mysql devra réécrire chaque ligne de la table, y compris la nouvelle colonne. Étant donné que vous avez plus de 2 millions de lignes, je m'attendrais certainement à ce que cela prenne beaucoup de temps, pendant lequel votre serveur sera probablement principalement lié aux E/S. Vous trouverez généralement qu'il est plus performant de faire ce qui suit :

CREATE TABLE main_table_new LIKE main_table;
ALTER TABLE main_table_new ADD COLUMN location VARCHAR(256);
INSERT INTO main_table_new SELECT *, NULL FROM main_table;
RENAME TABLE main_table TO main_table_old, main_table_new TO main_table;
DROP TABLE main_table_old;

De cette façon, vous ajoutez la colonne sur la table vide et écrivez essentiellement les données dans cette nouvelle table que vous êtes sûr que personne d'autre ne regardera sans verrouiller autant de ressources.