我在網上搜索了一些東西,但沒有什麼幫助。我想用文章列表更新數據庫,但我發現的方式非常慢。在mdb數據庫中更新超過50,000行的最快方法c#
這是我的代碼:
List<Article> costs = GetIdCosts(); //here there are 70.000 articles
conn = new OleDbConnection(string.Format(MDB_CONNECTION_STRING, PATH, PSW));
conn.Open();
transaction = conn.BeginTransaction();
using (var cmd = conn.CreateCommand())
{
cmd.Transaction = transaction;
cmd.CommandText = "UPDATE TABLE_RO SET TABLE_RO.COST = ? WHERE TABLE_RO.ID = ?;";
for (int i = 0; i < costs.Count; i++)
{
double cost = costs[i].Cost;
int id = costs[i].Id;
cmd.Parameters.AddWithValue("data", cost);
cmd.Parameters.AddWithValue("id", id);
if (cmd.ExecuteNonQuery() != 1) throw new Exception();
}
}
transaction.Commit();
但這種方式需要大量的分像10分鐘以上。還有另一種方法來加速此更新?謝謝。
您打算嘗試去討論該表上的約束條件,但是由於新數據的原因,當您再次激活時可能無法驗證約束條件。 –
在進入for循環之前,嘗試用'cmd.Parameters.Add()'創建參數,然後執行'cmd.Prepare()'。然後,在循環中只分配參數值和'.ExecuteNonQuery()'。這可能會加快一點。 –