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.