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

MySQL efektivně kopíruje všechny záznamy z jedné tabulky do druhé

Jen jedna věc ti chybí. Zejména, pokud používáte InnoDB, chcete do příkazu SELECT explicitně přidat klauzuli ORDER BY, abyste zajistili, že vkládáte řádky v pořadí primárního klíče (shlukovaného indexu):

INSERT INTO product_backup SELECT * FROM product ORDER BY product_id

Zvažte odstranění sekundárních indexů ze zálohovací tabulky, pokud nejsou potřeba. To také ušetří určité zatížení serveru.

A konečně, pokud používáte InnoDB, snižte počet požadovaných zámků řádků a pouze explicitně uzamkněte obě tabulky:

LOCK TABLES product_backup WRITE;
LOCK TABLES product READ;
INSERT INTO product_backup SELECT * FROM product ORDER BY product_id;
UNLOCK TABLES;

Zamykání pravděpodobně nebude velký rozdíl, protože zamykání řádků je velmi rychlé (i když ne tak rychlé jako zámky tabulky), ale když jste se zeptali.



  1. AJAX aktualizuje databázi MYSQL pomocí funkce volané z HTML generovaného z PHP

  2. Opakující se hodnoty ve sloupci

  3. Instalace PostgreSQL na Ubuntu pro Ruby on Rails

  4. Jak kombinovat datum z jednoho pole s časem z jiného pole - MS SQL Server