首页 > 解决方案 > 极速查询更新mysql

问题描述

我必须更新放置在包含大约 1500 条记录的在线 mysql 数据库上的表的大约 400 条记录。我在每个周期执行一个带有 UPDATE 查询的周期,但更新时间约为 1 分钟。建议我如何加快更新速度。

注意: - 我已经索引了表格;- 代码在 C# 中;

标签: c#mysqlsql

解决方案


为每个循环生成以分号结尾的动态查询字符串

例子 :

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很重要


推荐阅读