Merakit satu INSERT
pernyataan dengan banyak baris jauh lebih cepat di MySQL daripada satu INSERT
pernyataan per baris.
Yang mengatakan, sepertinya Anda mungkin mengalami masalah penanganan string di PHP, yang sebenarnya merupakan masalah algoritme, bukan masalah bahasa. Pada dasarnya, saat bekerja dengan string besar, Anda ingin meminimalkan penyalinan yang tidak perlu. Terutama, ini berarti Anda ingin menghindari penggabungan. Cara tercepat dan paling hemat memori untuk membuat string besar, seperti menyisipkan ratusan baris sekaligus, adalah dengan memanfaatkan implode()
fungsi dan penetapan array.
$sql = array();
foreach( $data as $row ) {
$sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));
Keuntungan dari pendekatan ini adalah Anda tidak menyalin dan menyalin ulang pernyataan SQL yang sejauh ini telah Anda susun dengan setiap rangkaian; sebagai gantinya, PHP melakukan ini sekali di implode()
penyataan. Ini adalah besar menang.
Jika Anda memiliki banyak kolom untuk disatukan, dan satu atau lebih kolom sangat panjang, Anda juga dapat membuat loop dalam untuk melakukan hal yang sama dan menggunakan implode()
untuk menetapkan klausa nilai ke larik luar.