Rumah > pangkalan data > tutorial mysql > Kaedah Manakah yang Lebih Cekap untuk Memasukkan Berbilang Baris ke dalam Jadual MySQL dengan PDO: Sisipan Berulang atau Sisipan Batch?

Kaedah Manakah yang Lebih Cekap untuk Memasukkan Berbilang Baris ke dalam Jadual MySQL dengan PDO: Sisipan Berulang atau Sisipan Batch?

Barbara Streisand
Lepaskan: 2024-11-11 12:07:03
asal
797 orang telah melayarinya

Which Method is More Efficient for Inserting Multiple Rows into a MySQL Table with PDO: Iterative Insert or Batch Insert?

Memasukkan Berbilang Baris dengan PDO MySQL: Prestasi dan Kecekapan

Apabila memasukkan berbilang baris ke dalam jadual MySQL menggunakan PDO, terdapat beberapa pendekatan untuk pertimbangkan. Soalan ini meneroka kecekapan relatif dan keselamatan dua kaedah biasa:

Kaedah 1: Sisipan Berulang Menggunakan foreach

$stmt = $db->prepare($sql);

foreach ($rows as $row) {
  $stmt->execute($row);
}
Salin selepas log masuk

Kaedah 2: Sisipan Batch menggunakan Penggabungjalinan

$sql = "insert into `table_name` (col1, col2, col3) values ";
$sql .= //not sure the best way to concatenate all the values, use implode?
$stmt = $db->prepare($sql)->execute();
Salin selepas log masuk

Prestasi Pertimbangan

Sisipan kelompok (Kaedah 2) secara amnya lebih pantas daripada sisipan berulang (Kaedah 1) kerana ia mengurangkan bilangan pertanyaan yang dihantar ke pangkalan data. Walau bagaimanapun, dalam kebanyakan senario praktikal, perbezaan prestasi adalah diabaikan.

Keselamatan dan Kebolehpercayaan

Kedua-dua kaedah adalah selamat dan boleh dipercayai apabila digunakan dengan betul. Untuk mengelakkan kelemahan suntikan SQL, adalah penting untuk menggunakan pernyataan yang disediakan dan pertanyaan berparameter.

Pendekatan Terbaik

Pendekatan terbaik bergantung pada keperluan khusus aplikasi anda:

  • Kaedah 1 (Sisipan Berulang) lebih mudah untuk dilaksanakan dan sesuai untuk set data bersaiz kecil atau sederhana.
  • Kaedah 2 (Sisipan Batch) lebih cekap untuk set data yang besar, tetapi ia memerlukan kod yang lebih kompleks.

Pertimbangkan kod folgenden sebagai versi Kaedah 2 yang diubah suai, menggunakan implode() untuk penyatuan nilai dan parameterisasi untuk dipertingkatkan keselamatan:

$sql = "insert into `table_name` (col1, col2, col3) values ";

$paramArray = array();
$sqlArray = array();

foreach ($rows as $row) {
    $sqlArray[] = '(' . implode(',', array_fill(0, count($row), '?')) . ')';
    foreach ($row as $element) {
        $paramArray[] = $element;
    }
}

$sql .= implode(',', $sqlArray);

$stmt = $db->prepare($sql);
$stmt->execute($paramArray);
Salin selepas log masuk

Atas ialah kandungan terperinci Kaedah Manakah yang Lebih Cekap untuk Memasukkan Berbilang Baris ke dalam Jadual MySQL dengan PDO: Sisipan Berulang atau Sisipan Batch?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan