Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách hiệu quả nhất để chèn Hàng vào Cơ sở dữ liệu MySQL

Đây là mã "nhiều lần chèn" của tôi.

Việc chèn 100 nghìn hàng chỉ mất 40 giây thay vì chỉ mất 40 giây 3 giây !!

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

Câu lệnh SQL đã tạo trông giống như sau:

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

Cập nhật :Cảm ơn Salman A Tôi đã thêm MySQLHelper.EscapeString để tránh chèn mã được sử dụng nội bộ khi bạn sử dụng các tham số.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để đặt múi giờ của MySQL?

  2. MySQL - buộc không sử dụng bộ đệm để kiểm tra tốc độ truy vấn

  3. Câu lệnh SQL đang bỏ qua tham số where

  4. Tìm kiếm văn bản trong các trường trong mỗi bảng của cơ sở dữ liệu MySQL

  5. Lỗi:chọn lệnh bị từ chối đối với người dùng '<userid>' @ '<ip-address>' cho bảng '<table-name>'