gpt4 book ai didi

c# - 加速插入 - 一次插入列表

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:03 26 4
gpt4 key购买 nike

如何在插入多个数据时加快时间?

我从 excel 中获取数据并将它们存储在列表中。在我的循环中,我为每一行打开连接,然后用我的插入函数关闭。 Insert 函数逐行插入数据。有时这个操作会花费很多时间。我的插入循环是这样的

private void btnSave_Click(object sender, RoutedEventArgs e)
{
if (cmpList.Count == 0)
{
MessageBoxHelper.ShowError("List can not be inserted");
return;
}

foreach (var item in cmpList)
{
item.StartDate = dpStart.SelectedDate.Value;
item.FinishDate = dpFinish.SelectedDate.Value;
item.Insert();
}

MessageBoxHelper.ShowInformation("List was inserted successfully!");
comboCampaignType.IsEnabled = true;
}

我像这样从 excel 中为所有行创建 cmpList

for (int i=0; i<excelRowCount; i++)
{
Campaign cmp = new Campaign();
cmp.Type = 1;
cmp.PriceP.Amount = double.Parse((string)sheet.GetRow(row).GetCell(1).Value, CultureInfo.InvariantCulture);
cmp.PriceV.Amount = double.Parse((string)sheet.GetRow(row).GetCell(1).Value, CultureInfo.InvariantCulture);
cmp.PriceP.Currency = (string)sheet.GetRow(row).GetCell(2).Value;
cmp.PriceV.Currency = (string)sheet.GetRow(row).GetCell(2).Value;
cmp.MinOrder = Convert.ToDouble((string)sheet.GetRow(row).GetCell(3).Value);
cmpList.Add(cmp);
}

那么,有没有什么办法一次性插入列表呢?有什么想法可以加快这个操作吗?

最佳答案

有多种原因可能会导致性能问题。您正在使用存储过程,这比在 C# 端使用 sql 语句更快。然而;为每一行创建连接也将是昂贵的。您应该考虑保留单个连接并执行插入(请记住以避免连接超时)。如果您能够忽略存储过程,您应该遵循批插入选项,例如 SqlBulkCopy,或者您甚至可以构建自定义 SQL 插入语句,例如每个插入语句 1000 个项目。

既然你说“有时这个操作需要很多时间”,问题可能是数据库服务器负载、约束、触发器等。你应该避免使用过多的触发器和约束,这可能会导致巨大的性能问题。您可以通过暂时关闭约束来检查它,如 this post 中所述.

关于c# - 加速插入 - 一次插入列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45079983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com