优化 MySQL 数据库行插入以提高性能
将大量行高效插入 MySQL 数据库的挑战是众所周知的。虽然所提供的使用单独插入的代码片段可能很熟悉,但它存在性能瓶颈。然而,有一种替代方法可以显着提高插入速度。
多行插入
与其对每一行执行单独的插入,效率更高将多行分组到单个插入语句中。此技术在以下修订后的代码中实现:
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(); } } }
改进的性能
此方法可显着减少插入时间。原代码需要 40 秒插入 100k 行,而修改后的代码只需 3 秒即可完成任务,提升了 90% 以上!
说明
提高效率的关键在于最大限度地减少数据库往返次数。通过将多行分组到单个语句中,我们减少了与建立和关闭多个数据库连接相关的开销。然后,数据库可以将整个插入组作为单个操作进行处理,从而无需单独执行每一行。
安全注意事项
始终重要的是构建 SQL 语句时防止代码注入。在提供的代码中使用 MySqlHelper.EscapeString 可确保安全转义潜在的恶意输入,从而防止 SQL 注入漏洞。
以上是如何优化 MySQL 数据库行插入以获得更快的性能?的详细内容。更多信息请关注PHP中文网其他相关文章!