De um modo geral, você pode usar qualquer um ou mais dos seguintes:
- Iniciar uma transação, fazer inserções, confirmar
- Empacote vários valores em uma única inserção na consulta
- Retire todas as restrições antes de inserir e restabeleça as restrições após a inserção em massa (exceto possivelmente a chave primária, embora não tenha muita certeza disso)
- Use
insert into ... select
se adequado
O primeiro (usando transações) provavelmente ajudará, mas não tenho certeza se funciona em tabelas myisam, com innodb ele faz um trabalho muito bom - eu só uso quando sou forçado a usar mysql, prefiro postgresql .
No seu caso específico, inserindo 100.000 linhas de dados, você poderia fazer o seguinte:
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;
Testei isso na minha máquina, obtive:
Query OK, 100000 rows affected (0.70 sec)
Records: 100000 Duplicates: 0 Warnings: 0
Tenho certeza que você não pode ficar muito mais rápido do que isso para 100.000 linhas.