Maison >base de données >tutoriel mysql >Comment puis-je insérer efficacement un grand nombre de lignes dans une base de données MySQL ?

Comment puis-je insérer efficacement un grand nombre de lignes dans une base de données MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-24 02:28:09980parcourir

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

Insertion efficace de lignes dans les bases de données MySQL

L'insertion d'un grand nombre de lignes dans une base de données MySQL peut être une tâche fastidieuse, en particulier lors de l'utilisation méthodes traditionnelles comme les inserts à une seule rangée. Pour améliorer les performances, envisagez d'utiliser des techniques plus efficaces.

Insertion à une seule ligne ou insertions groupées

En général, les insertions à une seule ligne sont utilisées pour insérer des enregistrements individuels un par un. un temps. Bien que cette approche soit simple, elle peut s’avérer inefficace lorsqu’il s’agit de grands ensembles de données. Envisagez plutôt d’utiliser des insertions groupées pour insérer plusieurs lignes simultanément. En concaténant plusieurs valeurs de ligne en une seule instruction INSERT, un gain de temps important peut être réalisé.

Mise en œuvre du code

Le code suivant démontre une approche d'insertion en masse qui peut considérablement améliorer vitesse d'insertion :

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();
        }
    }
}

Ce code parcourt les lignes pour insérer et construit une instruction INSERT groupée en concaténant la ligne individuelle valeurs. L'instruction résultante insère toutes les lignes simultanément, ce qui entraîne des gains de performances substantiels.

Échapper aux données d'entrée pour des raisons de sécurité

Il est crucial de noter que les insertions groupées peuvent exposer des vulnérabilités de sécurité potentielles. Pour empêcher l'injection SQL, il est essentiel d'échapper à toute entrée utilisateur avant de l'inclure dans l'instruction INSERT. Comme démontré dans le code ci-dessus, MySqlHelper.EscapeString peut être utilisé à cette fin.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn