sql >> Database teknologi >  >> RDS >> Mysql

PDO og binding af flere værdisæt under indsættelse - for nylig

I teorien lyder det måske som om, at en enkelt sætning er mere effektiv, fordi du undgår at foretage flere opkald til MySQL-serveren, men virkeligheden er, at dette er en mikrooptimering, og du overkomplicerer din kode til næsten ingen fordel.

Det fede ved forberedte erklæringer er, at det er udarbejdet én gang og kan udføres flere gange. Dette sparer dig allerede for at parse SQL-sætningen flere gange. Du skal blot forberede en sætning uden for en loop og derefter udføre den inde i en loop.

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

Hvis du pakker det hele ind i en transaktion, som din sunde fornuft foreslog i kommentarerne, så er der ingen mærkbar forskel i ydeevne sammenlignet med et stort udsagn.

$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. MySQL-indekser – hvor mange er nok?

  2. Kryptering af MySQL-trafik i scripts

  3. Liste over ikke-tomme tabeller i MySQL-databasen

  4. Alternativer til LIMIT og OFFSET for personsøgning i Oracle