Secara umum, Anda dapat menggunakan salah satu atau lebih dari berikut ini:
- Mulai transaksi, lakukan insert, commit
- Kemas beberapa nilai ke dalam satu sisipan ke dalam kueri
- Hilangkan batasan apa pun sebelum melakukan penyisipan dan kembalikan batasan setelah penyisipan massal (kecuali mungkin kunci utama, meskipun tidak terlalu yakin)
- Gunakan
insert into ... select
jika cocok
Yang pertama (menggunakan transaksi) kemungkinan besar membantu, tetapi saya tidak yakin apakah itu berfungsi di tabel myisam, dengan innodb itu melakukan pekerjaan yang sangat baik - saya hanya menggunakannya ketika saya terpaksa menggunakan mysql, saya lebih suka postgresql .
Dalam kasus khusus Anda, memasukkan 100.000 baris data, Anda dapat melakukan hal berikut:
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;
Menguji ini di mesin saya, dapatkan:
Query OK, 100000 rows affected (0.70 sec)
Records: 100000 Duplicates: 0 Warnings: 0
Saya cukup yakin Anda tidak bisa lebih cepat dari itu untuk 100.000 baris.