sql >> Database >  >> RDS >> Mysql

PDO en het binden van meerdere waardensets tijdens het invoegen - recentelijk

In theorie klinkt het misschien alsof een enkele instructie efficiënter is omdat je niet meerdere aanroepen naar de MySQL-server hoeft te doen, maar de realiteit is dat dit een micro-optimalisatie is en je je code te ingewikkeld maakt voor nauwelijks enig voordeel.

Het leuke van voorbereide statements is dat het één keer wordt voorbereid en meerdere keren kan worden uitgevoerd. Dit bespaart u al het meerdere keren ontleden van de SQL-instructie. Bereid eenvoudig een instructie buiten een lus voor en voer deze vervolgens binnen een lus uit.

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

Als je het hele ding in een transactie verpakt, zoals Your Common Sense in de opmerkingen suggereerde, is er geen merkbaar verschil in prestaties in vergelijking met één grote verklaring.

$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();


  1. Binaire waarden vergelijken in MySQL

  2. 7 manieren waarop Microsoft Access uw bedrijf kan helpen

  3. Binaire modus inschakelen tijdens het herstellen van een database vanaf een SQL-dump

  4. Geneste lussen Joins en prestatiespoelen