sql >> Base de Datos >  >> RDS >> Mysql

PDO y vinculación de múltiples conjuntos de valores durante la inserción - recientemente

En teoría, podría parecer que una sola declaración es más eficiente porque evita realizar varias llamadas al servidor MySQL, pero la realidad es que se trata de una microoptimización y está complicando demasiado su código sin apenas obtener ningún beneficio.

Lo bueno de las declaraciones preparadas es que se prepara una vez y se puede ejecutar varias veces. Esto ya le ahorra analizar la declaración SQL varias veces. Simplemente prepare una declaración fuera de un ciclo y luego ejecútela dentro de un ciclo.

$names = [['Joe', 'Smith'], ['Fred', 'Sampson'], ['Lisa', 'Pearce']];
$stmt = $pdo->prepare('INSERT INTO table (firstName, lastName) VALUES(?,?)');
foreach ($names as $name) {
    $stmt->execute($name);
}

Si envuelve todo en una transacción como sugiere Your Common Sense en los comentarios, entonces no hay una diferencia notable en el rendimiento en comparación con una gran declaración.

$names = [['Joe', 'Smith'], ['Fred', 'Sampson'], ['Lisa', 'Pearce']];
$stmt = $pdo->prepare('INSERT INTO people (firstName, lastName) VALUES(?,?)');
$pdo->beginTransaction();
foreach ($names as $name) {
    $stmt->execute($name);
}
$pdo->commit();