Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Najbardziej wydajny sposób wstawiania wierszy do bazy danych MySQL

Oto mój kod „wielu wstawek”.

Wstawienie 100 tys. wierszy zajęło zamiast 40 sekund tylko 3 sekundy !!

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

Utworzona instrukcja SQL wygląda tak:

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

Aktualizacja :Dzięki Salmanowi A Dodałem MySQLHelper.EscapeString aby uniknąć wstrzykiwania kodu, który jest wewnętrznie używany podczas używania parametrów.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mierzenie rzeczywistego czasu zapytania MySQL

  2. Jak obciąć tabelę z ograniczeniami klucza obcego?

  3. Zamień na składnię zapytania

  4. AKTUALIZACJA MySQL:5 najważniejszych wskazówek dla programistów T-SQL

  5. Instrukcja SQL CASE