sql >> Databáze >  >> RDS >> Mysql

PDO a vazba více hodnotových sad během vkládání - nedávno

Teoreticky by to mohlo znít, že jeden příkaz je efektivnější, protože se vyhnete vícenásobnému volání na server MySQL, ale realita je taková, že se jedná o mikrooptimalizaci a zbytečně komplikujete svůj kód, abyste měli sotva nějaký užitek.

Skvělé na připravených příkazech je to, že jsou připraveny jednou a lze je provést vícekrát. To vám již ušetří vícenásobnou analýzu příkazu SQL. Jednoduše připravte příkaz mimo smyčku a poté jej proveďte uvnitř smyčky.

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

Pokud to celé zabalíte do transakce, jak navrhuje Váš selský rozum v komentářích, není zde žádný znatelný rozdíl ve výkonu ve srovnání s jedním velkým prohlášením.

$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. Plynulé NHibernate DuplicateMappingException s automatickým mapováním

  2. Jak získat hodnoty, které neobsahují čísla v SQL Server

  3. Jak navrhnout databázi cestovního webu

  4. Jak vložit aktualizovatelný záznam se sloupcem JSON v PostgreSQL pomocí JOOQ?