c# - SQL 和 RAM...如何在不卡住应用程序的情况下更新 2000 条记录

标签 c# sql-server performance

我刚刚从一个 WinForms 应用程序运行了一个查询,该应用程序为 2k 条记录更新了 1 个字段,但通常会更多。唯一的问题是应用程序只是停止响应,更新 10 条记录大约需要 30 秒,这还不够好。我怎么搞砸了?

代码

using (SqlConnection conx = GetConnection())
{
  conx.Open();
  using (SqlCommand cmd = new SqlCommand())
  {
    cmd.Connection = conx;

    int counter = 0;
    foreach (DataRow row in mainResultsTable.Rows)
    {
       if(controlResult)
       {
         thisSerial = row[2].ToString();
         col = "[someColumn]";
       }
       cmd.CommandText = "UPDATE SomeTable$ SET [ToBeUpdated] = '" + DateTime.Now.ToString() + "' WHERE SomeColumn ='" + thisSerial.ToString() + "'";
       cmd.ExecuteNonQuery();
       counter++;
       if (counter == 10)
       {
         MessageBox.Show("10");
       }
    }
  }
}

附言。测试不是非常准确,我等待消息框弹出。

所以我最后做的是在 SQL Server 上创建一个临时表,导入上传数据并批量完成,操作完成后删除临时表,是否可取?

最佳答案

如果可能的话,您最好运行一个 SQL 调用来更新您的所有记录,这样会快得多。如果您可以使用参数定义执行此操作的查询,它应该会令人满意地更新。

或者,您必须考虑是否可以线程,这取决于您是否需要在继续之前完成它。

关于c# - SQL 和 RAM...如何在不卡住应用程序的情况下更新 2000 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6814512/

相关文章:

c# - 作业兼容性有问题?

c# - 10 年后重返 Windows 编程

sql - 完全外连接的顺序会产生不同数量的结果行..为什么?

c++ - 浮点计数指令

database - RDF存储与传统数据库性能对比

c# - 单元测试asp.net路由映射扩展方法

c# - 在更大的 #if 条件 block 内的新行中包含 #if 的多行字符串

SQL Server 内存中 OLTP 哈希索引设置 BUCKET_COUNT 值

c# - 将 bytes[] 转换为 VARBINARY 无效

excel - VBA 使用不等式替换