Mysql
 sql >> база данни >  >> RDS >> Mysql

PDO и обвързване на множество набори стойности по време на вмъкване - наскоро

На теория може да звучи, че едно изявление е по-ефективно, защото избягвате да извършвате множество извиквания към MySQL сървъра, но реалността е, че това е микрооптимизация и усложнявате прекалено кода си без никаква полза.

Страхотното при подготвените оператори е, че се подготвят веднъж и могат да бъдат изпълнени няколко пъти. Това вече ви спестява многократно анализиране на SQL израза. Просто подгответе изявление извън цикъл и след това го изпълнете вътре в цикъл.

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

Ако обвиете цялото нещо в транзакция, както вашият здрав разум предложи в коментарите, тогава няма забележима разлика в производителността в сравнение с едно голямо изявление.

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL уникален въпрос за чувствителност на главни и малки букви

  2. MySql:Изберете елементи, които имат всички стойности

  3. PHP фатална грешка:Извикване на недефинирана функция mysqli_stmt_get_result()

  4. Проектиране на връзки около структура на наследяване

  5. пребройте 10-те най-често срещани стойности в колона в mysql