Teoretycznie może to brzmieć tak, jakby pojedyncza instrukcja była bardziej wydajna, ponieważ unikasz wykonywania wielu wywołań do serwera MySQL, ale w rzeczywistości jest to mikrooptymalizacja i nadmiernie komplikujesz swój kod, nie osiągając prawie żadnych korzyści.
Fajną rzeczą w przygotowanych oświadczeniach jest to, że jest przygotowywana raz i może być wykonywana wiele razy. Dzięki temu nie musisz już wielokrotnie analizować instrukcji SQL. Po prostu przygotuj instrukcję poza pętlą, a następnie wykonaj ją wewnątrz pętli.
$names = [['Joe', 'Smith'], ['Fred', 'Sampson'], ['Lisa', 'Pearce']];
$stmt = $pdo->prepare('INSERT INTO table (firstName, lastName) VALUES(?,?)');
foreach ($names as $name) {
$stmt->execute($name);
}
Jeśli zapakujesz całość w transakcję, jak sugerował Twój Zdrowy Rozsądek w komentarzach, nie ma zauważalnej różnicy w wydajności w porównaniu z jednym dużym stwierdzeniem.
$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();