sql >> Database teknologi >  >> RDS >> Mysql

Den mest effektive måde at indsætte rækker i MySQL-databasen

Her er min "multiple inserts"-kode.

Indsættelsen af ​​100.000 rækker tog kun 3 sekunder i stedet for 40 sekunder !!

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

Den oprettede SQL-sætning ser således ud:

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

Opdater :Tak Salman A Jeg tilføjede MySQLHelper.EscapeString for at undgå kodeinjektion, som bruges internt, når du bruger parametre.



  1. PGLogical 1.1-pakker til PostgreSQL 9.6beta1

  2. Hvad er den bedste praksis for at bruge en GUID som en primær nøgle, specifikt med hensyn til ydeevne?

  3. MySQL Great Circle Distance (Haversine formel)

  4. 5 måder at tælle antallet af brugerdefinerede tabeller i en SQL Server-database