Optimisation des opérations d'INSERT en masse dans MySQLi : une approche sécurisée et efficace
L'insertion de gros volumes de données dans une base de données MySQL nécessite une technique qui garantit à la fois sécurité et performances. Cet article explore une méthode permettant d'insérer efficacement de nombreuses lignes dans une table tout en atténuant le risque d'injections SQL.
Le code fourni, qui utilise plusieurs instructions préparées dans une boucle, peut introduire un goulot d'étranglement en termes de performances et des problèmes potentiels de débordement de pile. . Une meilleure approche consiste à placer les insertions dans une transaction et à déplacer l'instruction préparée et la liaison de paramètres en dehors de la boucle.
$mysqli->query("START TRANSACTION"); $query = "INSERT INTO table (link) VALUES (?)"; $stmt = $mysqli->prepare($query); $stmt->bind_param("s", $one); foreach ($array as $one) { $stmt->execute(); } $mysqli->query("COMMIT");
Les transactions offrent plusieurs avantages pour les insertions groupées :
Dans les tests de performances, le déplacement des insertions dans une transaction a entraîné une augmentation significative de la vitesse. Pour 10 000 itérations, le temps d'exécution est passé de 226 secondes sans transactions à seulement 2 secondes avec transactions.
Cette approche fournit un mécanisme sécurisé et efficace pour insérer de grands ensembles de données dans une base de données MySQL tout en atténuant les risques potentiels de SQL. injections et goulots d’étranglement des performances.
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!