Mysql
 sql >> база данни >  >> RDS >> Mysql

Най-ефективният начин за вмъкване на редове в MySQL база данни

Ето моят код за "множество вмъквания".

Вмъкването на 100 000 реда отне вместо 40 секунди само 3 секунди !!

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

Създаденият SQL оператор изглежда така:

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

Актуализиране :Благодаря Salman A Добавих MySQLHelper.EscapeString за да избегнете инжектирането на код, което се използва вътрешно, когато използвате параметри.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL нарушава ли стандарта, като позволява избор на колони, които не са част от групата по клауза?

  2. Транспониране на динамични колони в редове

  3. DOUBLE срещу DECIMAL в MySQL

  4. MySQL - Как да развъртите колони към редове?

  5. Какъв е еквивалентът на LEN() в MySQL?