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

udfylde en MySQL med en stor række rækker hurtigt

Generelt kan du bruge en eller flere af følgende:

  • Start en transaktion, lav indsættelser, forpligt
  • Pak flere værdier i en enkelt indsættelse i forespørgsel
  • Slet eventuelle begrænsninger, før du indsætter, og genindsæt begrænsninger efter masseindsættelsen (undtagen muligvis primærnøgle, dog ikke helt sikker på det)
  • Brug insert into ... select hvis det er passende

Den første (ved at bruge transaktioner) vil sandsynligvis hjælpe, men jeg er ikke sikker på, om den virker på myisam-tabeller, med innodb gør den et meget godt stykke arbejde - jeg bruger kun dem, når jeg er tvunget til at bruge mysql, jeg foretrækker postgresql .

I dit specifikke tilfælde kan du, ved at indsætte 100.000 rækker med data, gøre følgende:

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;

Testede dette på min maskine, fik:

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

Jeg er ret sikker på, at du ikke kan blive meget hurtigere end det for 100.000 rækker.



  1. Hvordan nulstiller man den primære nøgle i en tabel?

  2. MySQL-forespørgsel i Code Igniter Active Directory-format?

  3. MySQL - Vælg for at hente sidste dato og klokkeslæt

  4. hvordan tæller man de matchede søgeord ved hjælp af select i mysql codeigniter php?