私は 4,000 行を含む .txt ファイルを持っています。それらを mysql に挿入しようとしています。同じことを行う 2 つのアプローチがあります。最初のアプローチは次のように単純にコーディングされています。
$start = microtime(true);
foreach($b as $k=>$v){//$b is an array of 4,000 elements
$db->exec("INSERT INTO siji (en,cn) VALUES ('$v[0]','$v[1]')");
}
echo microtime(true)-$start;//116 sec.
116 秒かかります。2 番目の方法は PDO::bindParam() を使用することです。SQL クエリを繰り返す場合は、bindparam() を使用することをお勧めします。これは、各クエリの唯一の違いはそれらの値であるため、次のようにコーディングしたためです。 :
$start = microtime(true);
$stmt = $db->prepare('INSERT INTO siji (en,cn) VALUES (:en,:cn)');
$stmt->bindParam(':en',$en);
$stmt->bindParam(':cn',$cn);
foreach($b as $k=>$v){//$b is an array of 4,000 elements
$en = $v[0];
$cn = $v[1];
$stmt->execute();//
}
echo microtime(true)-$start;//127 sec.
2 番目のアプローチは最初のアプローチよりも高速であると思われますが、結果は私が思っていたものとは異なりますが、bindparam() は本当に一括挿入を高速化するのか教えてもらえますか? または、bindparam() を使用するときに何が間違っている可能性がありますか? ?