c# - 极速查询更新mysql
问题描述
我必须更新放置在包含大约 1500 条记录的在线 mysql 数据库上的表的大约 400 条记录。我在每个周期执行一个带有 UPDATE 查询的周期,但更新时间约为 1 分钟。建议我如何加快更新速度。
注意: - 我已经索引了表格;- 代码在 C# 中;
解决方案
为每个循环生成以分号结尾的动态查询字符串
例子 :
string sqlQuery = null; // Or use StringBuilder for better memory performance
foreach(var cycle in Cycles){
// Your scenario gone here
sqlQuery += "UPDATE YourTable SET Columns = Values ; \n";
}
以前的代码将一起执行所有更新语句!批量更新
我在处理 BLOB 或从循环或控件等生成的许多查询时使用动态字符串生成。在单个语句中一起更新会很快。
// BLOBS
if (Configuration.StoreObjectsAsBinary)
{
foreach (var BLOB in BLOBS)
CommandText += $"INSERT INTO General.BLOB(SystemID, BinaryValue)
VALUES({SystemID} {BLOB.Value}); \n";
}
// Note the Escapse character is important, and semicolon is must or try your luck.
使用Dapper ORM 获得更好的性能或执行查询
或 Legacy ADO.NET 以提高可维护性和可读性
using(var conection = new SqlConnection(""))
{
connection.Open();
using(var cmd = new SqlCommand("UPDATE QUERY", connection))
{
cmd.ExecuteNonQuery(); // Or better use Async version with await
}
}
请注意, using 语句对于再次连接回ConnectionPooling很重要