我目前正在重写一个旧的ASP \ ASP.NET应用程序。由于我不能完全重写,我需要按部分进行。 现在我正在将代码库从ODBC升级到.net连接器。
每次用户访问页面时都会有一个插入(或2)的功能。表现非常重要。这是INSERT数据的旧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();
}
}
}
我担心连接池耗尽。我的功能可以改进吗?
答案 0 :(得分:0)
注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函数,使用相同的连接可能更好。并在页面末尾关闭它。