Най-общо казано, можете да използвате едно или повече от следните:
- Започнете транзакция, направете вмъквания, ангажирайте
- Пакетирайте множество стойности в едно вмъкване в заявка
- Премахнете всички ограничения, преди да направите вмъкване и възстановете ограниченията след масовото вмъкване (с изключение на евентуално първичен ключ, но не съм много сигурен за това)
- Използвайте
insert into ... select
ако е подходящо
Първото (използване на транзакции) най-вероятно ще помогне, но не съм сигурен дали работи на таблици myisam, с innodb върши много добра работа - използвам ги само когато съм принуден да използвам mysql, предпочитам postgresql .
Във вашия конкретен случай, вмъквайки 100 000 реда с данни, можете да направите следното:
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;
Тествах това на моята машина, получих:
Query OK, 100000 rows affected (0.70 sec)
Records: 100000 Duplicates: 0 Warnings: 0
Почти съм сигурен, че не можете да получите много по-бързо от това за 100 000 реда.