Mysql
 sql >> база данни >  >> RDS >> Mysql

ALTER TABLE ADD COLUMN отнема много време

Вашата ALTER TABLE изявлението предполага, че mysql ще трябва да пренапише всеки един ред от таблицата, включително новата колона. Тъй като имате повече от 2 милиона реда, определено бих очаквал, че отнема значително време, през което вашият сървър вероятно ще бъде предимно свързан с IO. Обикновено ще откриете, че е по-ефективно да направите следното:

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;

По този начин добавяте колоната към празната таблица и по същество записвате данните в тази нова таблица, за която сте сигурни, че никой друг няма да гледа, без да заключи толкова много ресурси.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да INNER JOIN 3 таблици с помощта на CodeIgniter

  2. Разбиране на pdo mysql транзакции

  3. mysql_num_rows():предоставеният аргумент не е валиден ресурс за MySQL резултат

  4. Как да добавя дни към дата в MySQL

  5. Ежедневно архивиране на база данни с помощта на Cron Job