MySQL 数据库中的高效行插入
将大量行插入 MySQL 数据库可能是一项耗时的任务,尤其是在使用传统方法如单行插入。为了提高性能,请考虑采用更高效的技术。
单行插入与批量插入
通常,单行插入用于在以下位置插入单个记录:一次。虽然这种方法很简单,但在处理大型数据集时可能会变得效率低下。相反,请考虑使用批量插入同时插入多行。通过将多个行值连接到单个 INSERT 语句中,可以显着节省时间。
代码实现
以下代码演示了一种批量插入方法,可以显着改进插入速度:
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(); } } }
此代码迭代要插入的行并通过以下方式构造批量 INSERT 语句连接各个行值。生成的语句会同时插入所有行,从而显着提高性能。
转义输入数据以确保安全
需要注意的是,批量插入可能会暴露潜在的安全漏洞。为了防止 SQL 注入,必须先转义所有用户输入,然后再将其包含在 INSERT 语句中。如上面的代码所示,MySqlHelper.EscapeString 可以用于此目的。
以上是如何高效地将大量行插入MySQL数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!