sql >> Databasteknik >  >> RDS >> Mysql

MySQL kopierar effektivt alla poster från en tabell till en annan

Det är bara en sak du saknar. Särskilt, om du använder InnoDB, vill du uttryckligen lägga till en ORDER BY-sats i din SELECT-sats för att säkerställa att du infogar rader i primärnyckelordning (klustrade index):

INSERT INTO product_backup SELECT * FROM product ORDER BY product_id

Överväg att ta bort sekundära index på säkerhetskopieringstabellen om de inte behövs. Detta kommer också att spara en del belastning på servern.

Slutligen, om du använder InnoDB, minska antalet radlås som krävs och bara explicit lås båda tabellerna:

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

Låsningsgrejerna kommer förmodligen inte att göra någon stor skillnad, eftersom radlåsning går väldigt snabbt (men inte lika snabbt som bordslås), men eftersom du frågade.



  1. Heroku Postgres:psql:FATAL:ingen pg_hba.conf-post för värd

  2. Android-åtkomst till fjärrbaserad SQL-databas

  3. VÄNSTER JOIN endast första raden

  4. mysql Ogiltigt kolumnantal i CSV-inmatning vid import av csv-fil