0

我的更新代码:

 for (int i = this.MedaxilGridView1.CurrentCell.RowIndex; i < this.MedaxilGridView1.RowCount; i++)
 {
     // KartsifarishiGridView-dən id götürüb ona uyğun sorğumuzu yazırıq.
     sqlSorgu = "UPDATE customer set medaxil_status = '0' WHERE id = " + 
                 this.MedaxilGridView1.Rows[i].Cells["id"].Value;
     //Sorğunu icra edirk.
     Program.esas.sqlSorguCommand.CommandText = sqlSorgu;
     Program.esas.sqlSorguCommand.Connection = Program.esas.bazayaQosul;
     Program.esas.sqlSorguCommand.ExecuteNonQuery();
     MedaxilGridView1.Rows[i].DefaultCellStyle.BackColor = Color.Empty;

 }

行数:18286

这个版本需要5分钟

我怎样才能让它更快?

4

3 回答 3

1

您应该考虑使用哪个查询来提取 id 并将其直接用于更新,因此您调用数据库一次:

"UPDATE customer set medaxil_status = '0' WHERE id in (select xxx xxx xxx)"

如果要更新所有行,只需删除 where 子句并只调用该语句一次。如果您只有一个 id 列表,那么使用 alwais IN 子句对调用进行分块可能会减少查询数量,并有望减少整体执行时间。

于 2012-06-19T07:10:50.110 回答
0

您可以使用BeginExecuteNonQuery它,通过打开一个连接并批量执行所有查询,这将为您节省连接启动开销。

可以在此处找到来自 MSDN 的完整示例

此外,我建议您开始使用SQL 参数

于 2012-06-19T07:07:38.070 回答
0

您是否尝试将循环包含在 Transaction 中?这加快了 MS Access 更新操作。

在此处查看此示例,该示例展示了如何在 C# 中使用 MS Access Transaction

于 2012-06-19T07:28:54.193 回答