sql >> Database >  >> RDS >> Mysql

MySQL kopieert efficiënt alle records van de ene tabel naar de andere

Er is maar één ding dat je mist. Vooral als u InnoDB gebruikt, wilt u expliciet een ORDER BY-component in uw SELECT-instructie toevoegen om ervoor te zorgen dat u rijen invoegt in de volgorde van de primaire sleutel (geclusterde index):

INSERT INTO product_backup SELECT * FROM product ORDER BY product_id

Overweeg om secundaire indexen in de back-uptabel te verwijderen als ze niet nodig zijn. Dit zal ook wat belasting op de server besparen.

Tot slot, als u InnoDB gebruikt, verminder dan het aantal rijvergrendelingen dat nodig is en vergrendel gewoon expliciet beide tabellen:

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

De vergrendelingsdingen zullen waarschijnlijk geen enorm verschil maken, omdat rijvergrendeling erg snel is (hoewel niet zo snel als tafelvergrendelingen), maar aangezien u het vroeg.



  1. mySQL De top 5 van elke categorie teruggeven

  2. KIES * WAAR NIET BESTAAT

  3. Mysql:Kolomkarakterset instellen

  4. Het volgnummer van een database-e-mailaccount binnen een profiel in SQL Server (T-SQL) wijzigen