sql >> Databáze >  >> RDS >> Mysql

ALTER TABLE ADD COLUMN trvá dlouho

Vaše ALTER TABLE prohlášení znamená, že mysql bude muset přepsat každý jednotlivý řádek tabulky včetně nového sloupce. Vzhledem k tomu, že máte více než 2 miliony řádků, rozhodně bych očekával, že to zabere značné množství času, během kterého bude váš server pravděpodobně většinou vázán na IO. Obvykle byste zjistili, že je výkonnější provést následující:

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;

Tímto způsobem přidáte sloupec do prázdné tabulky a v podstatě zapíšete data do nové tabulky, o kterých jste si jisti, že se na ně nikdo jiný nebude dívat, aniž byste zamkli co nejvíce zdrojů.



  1. Zjistěte, proč se nepodařilo odeslat e-mail na SQL Server (T-SQL)

  2. Jak vypsat všechny uživatele v PostgreSQL

  3. Tabulka MySQL je označena jako havarovaná a poslední (automatická?) oprava selhala

  4. Jak dát pozici nula spinneru rychlou hodnotu?