Heim >Datenbank >MySQL-Tutorial >Wie kann ich das Einfügen von Massendaten in MySQLi hinsichtlich Geschwindigkeit und Sicherheit optimieren?
Erweiterte Technik für das Einfügen von Massenwerten in MySQLi
Wenn Sie mit der Aufgabe konfrontiert werden, eine erhebliche Anzahl von Werten sicher in eine MySQL-Datenbank einzufügen, Entwickler greifen häufig auf sich wiederholende vorbereitete Anweisungen zurück, was bei großen Datensätzen zeitaufwändig sein kann. In diesem Artikel wird eine Technik untersucht, die die Leistung verbessert, ohne die SQL-Injection-Sicherheit zu beeinträchtigen.
Das Problem: Stapelüberläufe und langsames Einfügen
Ein gängiger Ansatz besteht darin, vorbereitete Anweisungen innerhalb von a zu verwenden Schleife, um jeden Wert einzeln einzufügen. Diese Methode kann jedoch zu Stapelüberläufen oder langsamen Ausführungszeiten führen, wenn der Datensatz groß ist.
$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(); }
Die Lösung: Transaktionen und optimierte Ausführung
Zur Optimierung der Im obigen Code können wir eine Kombination aus Transaktionen und einer verbesserten Ausführungsstrategie verwenden:
$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");
Implementierung Details:
Leistungsbewertung
Tests mit 10.000 Iterationen zeigen eine deutliche Leistungsverbesserung bei der Verwendung von Transaktionen :
Diese Optimierungstechnik sorgt für eine Geschwindigkeitssteigerung um zwei Größenordnungen und macht sie zu einer effizienten und sicheren Lösung für das Einfügen von Massenwerten in MySQL-Datenbanken mit MySQLi.
Das obige ist der detaillierte Inhalt vonWie kann ich das Einfügen von Massendaten in MySQLi hinsichtlich Geschwindigkeit und Sicherheit optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!