gpt4 book ai didi

c# - 高性能 mysql INSERT

转载 作者:行者123 更新时间:2023-11-29 23:29:20 26 4
gpt4 key购买 nike

我目前正在重写一个旧的 ASP\ASP.NET 应用程序。由于我无法完全重写,所以我需要分部分进行。现在我正在将代码库从 ODBC 升级到 .net 连接器。

有一个函数可以在用户每次访问页面时进行一次插入(或两次)。性能非常重要。这是插入数据的旧 ODBC 函数:

public string WriteDb(string sql)
{
myConnection.Close();
myConnection.Open();
myCommand.Connection = myConnection;
myCommand.CommandText = sql;
return myCommand.ExecuteNonQuery().ToString();
}

这是我正在研究的一个:

void WriteDb(string sql, ICollection<MySqlParameter> pms)
{
using(MySqlConnection myConnection = new MySqlConnection(sConnection))
{
using(MySqlCommand myCommand = myConnection.CreateCommand())
{
myCommand.CommandText = sql;
foreach (var p in pms)
{
myCommand.Parameters.Add(mySqlParameter);
myCommand.ExecuteNonQuery();
}
}
}

我担心连接池耗尽。我的功能可以改进吗?

最佳答案

注释 1 - 查询
我认为,最大的变化之一是您现在插入如下内容:

INSERT INTO tablename (KEY, KEY) VALUES (VALUE, VALUE);
INSERT INTO tablename (KEY, KEY) VALUES (VALUE, VALUE);

但是更好的插入是:

INSERT INTO tablename (KEY, KEY) VALUES (VALUE, VALUE), (VALUE, VALUE);

不需要 2 次查询和与数据库的通信,而只需要 1 次。
不知道您是否有这样的疑问。但它会提高性能。

注2 - 连接
您为每个查询创建一个新的 MySqlConnection。建立连接是一种繁重的方法。缓存您的连接,直到您停止使用它并在完成后关闭它,这将有很大帮助!对于您在页面上执行的所有 MySQL 函数使用相同的连接可能会更好。并在页面末尾关闭它。

关于c# - 高性能 mysql INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26681269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com