sql >> Base de Datos >  >> RDS >> Mysql

La forma más eficiente de insertar filas en la base de datos MySQL

Aquí está mi código de "inserciones múltiples".

La inserción de 100k filas tomó en lugar de 40 segundos solo 3 segundos !!

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

La declaración SQL creada se ve así:

INSERT INTO User (FirstName, LastName) VALUES ('test','test'),('test','test'),... ;

Actualizar :Gracias Salman A Agregué MySQLHelper.EscapeString para evitar la inyección de código que se usa internamente cuando usa parámetros.