Over het algemeen kunt u een of meer van de volgende gebruiken:
- Start een transactie, doe inserts, commit
- Verpak meerdere waarden in een enkele insert in de query
- Laat eventuele beperkingen weg voordat u de invoeging uitvoert en herstel de beperkingen na de massa-invoeging (behalve mogelijk de primaire sleutel, maar ben er niet erg zeker van)
- Gebruik
insert into ... select
indien geschikt
De eerste (met behulp van transacties) zal waarschijnlijk helpen, maar ik weet niet zeker of het werkt op myisam-tabellen, met innodb doet het heel goed werk - ik gebruik die alleen als ik gedwongen word mysql te gebruiken, ik geef de voorkeur aan postgresql .
In uw specifieke geval, door 100000 rijen gegevens in te voegen, kunt u het volgende doen:
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;
Ik heb dit op mijn machine getest, kreeg:
Query OK, 100000 rows affected (0.70 sec)
Records: 100000 Duplicates: 0 Warnings: 0
Ik ben er vrij zeker van dat je niet veel sneller kunt worden dan dat voor 100.000 rijen.