Heim >Datenbank >MySQL-Tutorial >Wie kann ich eine große Anzahl von Zeilen effizient in eine MySQL-Datenbank einfügen?

Wie kann ich eine große Anzahl von Zeilen effizient in eine MySQL-Datenbank einfügen?

Susan Sarandon
Susan SarandonOriginal
2024-11-24 02:28:09981Durchsuche

How Can I Efficiently Insert Large Numbers of Rows into a MySQL Database?

Effiziente Zeileneinfügung in MySQL-Datenbanken

Das Einfügen einer großen Anzahl von Zeilen in eine MySQL-Datenbank kann eine zeitaufwändige Aufgabe sein, insbesondere bei der Verwendung traditionelle Methoden wie einreihige Einsätze. Um die Leistung zu steigern, sollten Sie den Einsatz effizienterer Techniken in Betracht ziehen.

Einzelzeileneinfügung vs. Masseneinfügungen

Typischerweise werden einzeilige Einfügungen verwendet, um einzelne Datensätze nacheinander einzufügen eine Zeit. Obwohl dieser Ansatz unkompliziert ist, kann er bei der Verarbeitung großer Datenmengen ineffizient werden. Erwägen Sie stattdessen die Verwendung von Masseneinfügungen, um mehrere Zeilen gleichzeitig einzufügen. Durch die Verkettung mehrerer Zeilenwerte in einer einzigen INSERT-Anweisung können erhebliche Zeiteinsparungen erzielt werden.

Code-Implementierung

Der folgende Code zeigt einen Masseneinfügungsansatz, der eine erhebliche Verbesserung ermöglichen kann Einfügegeschwindigkeit:

public static void BulkToMySQL()
{
    string ConnectionString = "server=192.168.1xxx";
    StringBuilder sCommand = new StringBuilder("INSERT INTO User (FirstName, LastName) VALUES ");
    using (MySqlConnection mConnection = new MySqlConnection(ConnectionString))
    {
        List<string> Rows = new List<string>();
        for (int i = 0; i < 100000; i++)
        {
            Rows.Add(string.Format("('{0}','{1}')", MySqlHelper.EscapeString("test"), MySqlHelper.EscapeString("test")));
        }
        sCommand.Append(string.Join(",", Rows));
        sCommand.Append(";");
        mConnection.Open();
        using (MySqlCommand myCmd = new MySqlCommand(sCommand.ToString(), mConnection))
        {
            myCmd.CommandType = CommandType.Text;
            myCmd.ExecuteNonQuery();
        }
    }
}

Dieser Code durchläuft die einzufügenden Zeilen und erstellt eine Massen-INSERT-Anweisung durch Verketten der einzelnen Zeilen Zeilenwerte. Die resultierende Anweisung fügt alle Zeilen gleichzeitig ein, was zu erheblichen Leistungssteigerungen führt.

Eingabedaten aus Sicherheitsgründen maskieren

Es ist wichtig zu beachten, dass Masseneinfügungen potenzielle Sicherheitslücken aufdecken können. Um eine SQL-Injection zu verhindern, ist es wichtig, alle Benutzereingaben zu maskieren, bevor sie in die INSERT-Anweisung aufgenommen werden. Wie im obigen Code gezeigt, kann MySqlHelper.EscapeString für diesen Zweck verwendet werden.

Das obige ist der detaillierte Inhalt vonWie kann ich eine große Anzahl von Zeilen effizient in eine MySQL-Datenbank einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn