sql >> Databasteknik >  >> RDS >> Mysql

fylla en MySQL med en stor serie rader snabbt

Generellt sett kan du använda något eller flera av följande:

  • Starta en transaktion, infoga, commit
  • Packa flera värden i en enda infogning i fråga
  • Släpp alla begränsningar innan du infogar och återställ begränsningar efter massinsättningen (förutom möjligen primärnyckeln, dock inte så säker på det)
  • Använd insert into ... select om lämpligt

Den första (med transaktioner) kommer troligen att hjälpa, men jag är inte säker på om den fungerar på myisam-tabeller, med innodb gör den ett mycket bra jobb - jag använder bara dem när jag är tvungen att använda mysql, jag föredrar postgresql .

I ditt specifika fall, genom att infoga 100 000 rader med data, kan du göra följande:

INSERT INTO status(id, responseCode, lastUpdate) SELECT @row := @row + 1 as row, 503, NOW() FROM 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t,
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t2, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t3, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t4, 
(select 0 union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) t5, 
(SELECT @row:=0) t6;

Testade detta på min maskin, fick:

Query OK, 100000 rows affected (0.70 sec)
Records: 100000  Duplicates: 0  Warnings: 0

Jag är ganska säker på att du inte kan bli mycket snabbare än så för 100 000 rader.



  1. Hur konverterar/gjuter man varchar till datum?

  2. hur man binder värden INSERT INTO mysql perl

  3. effektivt sätt att implementera personsökning

  4. Visar tidigare frågelogg - MySQL