如何高效地将大量行插入MySQL数据库?

Susan Sarandon
发布: 2024-11-24 02:28:09
原创
954 人浏览过

How Can I Efficiently Insert Large Numbers of Rows into a MySQL Database?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板