sql >> Database teknologi >  >> RDS >> Mysql

MySQL kopierer effektivt alle poster fra en tabel til en anden

Der er kun én ting, du mangler. Især, hvis du bruger InnoDB, ønsker du eksplicit at tilføje en ORDER BY-klausul i din SELECT-sætning for at sikre, at du indsætter rækker i primær nøgle (clustered index) rækkefølge:

INSERT INTO product_backup SELECT * FROM product ORDER BY product_id

Overvej at fjerne sekundære indekser på backup-tabellen, hvis de ikke er nødvendige. Dette vil også spare en vis belastning på serveren.

Endelig, hvis du bruger InnoDB, skal du reducere antallet af rækkelåse, der er påkrævet, og blot eksplicit låse begge tabeller:

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

Låsningstingene vil sandsynligvis ikke gøre den store forskel, da rækkelåsning er meget hurtig (dog ikke så hurtig som bordlåse), men siden du spurgte.



  1. ODP.NET-forbindelsespooling:Sådan fortæller du, om en forbindelse er blevet brugt

  2. Mange tabeller eller rækker, hvilken er mere effektiv i SQL?

  3. Hvordan kan jeg finde dublerede fortløbende værdier i denne tabel?

  4. Oracle PL/SQL - tips til øjeblikkelig output / konsoludskrivning