Maison >base de données >tutoriel mysql >Comment puis-je optimiser l'insertion de données en masse dans MySQLi pour plus de vitesse et de sécurité ?
Technique améliorée pour l'insertion de valeurs en masse dans MySQLi
Lorsque vous êtes confronté à la tâche d'insérer en toute sécurité un nombre important de valeurs dans une base de données MySQL, les développeurs ont souvent recours à des instructions préparées répétitives, ce qui peut prendre beaucoup de temps pour de grands ensembles de données. Cet article explore une technique qui améliore les performances sans compromettre la sécurité de l'injection SQL.
Le problème : débordements de pile et insertion lente
Une approche courante consiste à utiliser des instructions préparées dans un boucle pour insérer chaque valeur individuellement. Cependant, cette méthode peut entraîner des débordements de pile ou des temps d'exécution lents lorsque l'ensemble de données est volumineux.
$array = ["array", "with", "about", "2000", "values"]; foreach ($array as $one) { $query = "INSERT INTO table (link) VALUES (?)"; $stmt = $mysqli->prepare($query); $stmt->bind_param("s", $one); $stmt->execute(); $stmt->close(); }
La solution : transactions et exécution optimisée
Pour optimiser le ci-dessus le code, nous pouvons utiliser une combinaison de transactions et une stratégie d'exécution améliorée :
$array = ["array", "with", "about", "2000", "values"]; $query = "INSERT INTO table (link) VALUES (?)"; $stmt = $mysqli->prepare($query); $stmt->bind_param("s", $one); $mysqli->query("START TRANSACTION"); foreach ($array as $one) { $stmt->execute(); } $stmt->close(); $mysqli->query("COMMIT");
Mise en œuvre Détails :
Évaluation des performances
Les tests avec 10 000 itérations démontrent une amélioration significative des performances lors de l'utilisation de transactions. :
Cette technique d'optimisation fournit une augmentation de vitesse de deux ordres de grandeur, ce qui en fait une solution efficace et sécurisée pour l'insertion de valeurs en masse dans les bases de données MySQL à l'aide de MySQLi.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!