Nonaktifkan autocommit
dan komit secara manual di akhir penyisipan
Menurut dokumen MySQL 8.0. (8.5.5 Pemuatan Data Massal untuk Tabel InnoDB )
Anda dapat meningkatkan kecepatan INSERT dengan mematikan komit otomatis:
Cara lain untuk melakukannya di Laravel adalah menggunakan Transaksi Basis Data :
DB::beginTransaction()
// Your inserts here
DB::commit()
Gunakan INSERT
dengan beberapa VALUES
Juga menurut dokumen MySQL 8.0 (8.2.5.1 Mengoptimalkan Pernyataan INSERT
) Anda dapat mengoptimalkan kecepatan INSERT dengan menggunakan beberapa VALUES
pada satu pernyataan sisipan.
Untuk melakukannya dengan Laravel, Anda cukup meneruskan array nilai ke insert()
metode:
DB::table('your_table')->insert([
[
'column_a'=>'value',
'column_b'=>'value',
],
[
'column_a'=>'value',
'column_b'=>'value',
],
[
'column_a'=>'value',
'column_b'=>'value',
],
]);
Menurut dokumen, ini bisa berkali-kali lebih cepat.
Baca dokumen
Kedua tautan dokumen MySQL yang saya taruh di posting ini memiliki banyak tips untuk meningkatkan kecepatan INSERT.
Hindari menggunakan Laravel/PHP untuk memasukkannya
Jika sumber data Anda (atau dapat berupa) file CSV, Anda dapat menjalankannya lebih cepat menggunakan mysqlimport
untuk mengimpor data.
Menggunakan PHP dan Laravel untuk mengimpor data dari file CSV adalah biaya tambahan, kecuali jika Anda perlu melakukan beberapa pemrosesan data sebelum memasukkan.