In generale, puoi utilizzare uno o più dei seguenti:
- Avvia una transazione, esegui inserimenti, esegui il commit
- Comprimi più valori in un unico inserto nella query
- Rilascia qualsiasi vincolo prima di inserire e ripristina i vincoli dopo l'inserimento di massa (tranne possibilmente la chiave primaria, tuttavia non ne sono molto sicuro)
- Usa
insert into ... select
se adatto
È molto probabile che il primo (usare le transazioni) aiuti, ma non sono sicuro che funzioni sui tavoli myisam, con innodb fa un ottimo lavoro - li uso solo quando sono costretto a usare mysql, preferisco postgresql .
Nel tuo caso specifico, inserendo 100000 righe di dati, potresti fare quanto segue:
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;
Testato sulla mia macchina, ho ottenuto:
Query OK, 100000 rows affected (0.70 sec)
Records: 100000 Duplicates: 0 Warnings: 0
Sono abbastanza sicuro che non puoi andare molto più veloce di così per 100000 righe.