【问题标题】:my C#/mySql product consumption query takes much longer time than the time tracked in the code我的 C#/mySql 产品消费查询花费的时间比代码中跟踪的时间长得多
【发布时间】:2020-09-30 16:30:27
【问题描述】:

我有一个 C# 前端和 mySql 8 后端用于我公司的数据库。我有一个查询,通过物料库存和项目过程跟踪的方式返回一个月的生产物料消耗。我查询没问题,但是查询花费的时间(其实很多查询)。

这是我的代码设置,通过单击标签运行。

private void lblQry_Click(xxx,xxx)
{ 
   DateTime startDT = DateTime.Now();
   DataTable qryResults = new DataTable(); datagridviewResult.DataSource = qryResults.
   //set up qryResults as Projects vs. materials consumeds and cost associated,
   (I will skip the actual codes here, but it consists several foreach loops with many queries to 
   assemble the consumption and cost data per project...)
   
   DateTime endDT=DateTime.Now(); TimeSpan ts=endDT-startDT; 
   MessageBox.Show("Query time: " + ts.Seconds.ToString());
}

我已经多次运行了这段代码,结果都经过检查和验证。但是它需要很长时间才能完成,而且时间比我在代码中输入的跟踪要长得多,弹出消息通常显示大约 20 - 30 秒,但是我点击标签后数据出现 int datagridview 的实际时间超过 10 分钟。

请有人给我一些关于问题出在哪里的想法?为什么这两次休息这么多?非常感谢。

【问题讨论】:

  • 您介意点击编辑,然后选择突出显示您问题的代码部分并按下编辑框上方的{} 按钮吗?

标签: c# mysql performance datagridview


【解决方案1】:

不要将 DataTable 分配给 datagridview 的 DataSource 然后开始填充表格;您可以触发大量更新和刷新数据网格视图。如果您的数据表包含一千个项目,并且您设法在每个项目项目之后触发网格刷新,它会自行刷新一千次

填写表格,然后将其分配给数据源

如果您绝对必须首先进行此分配,请调用 BeginLoadData/EndLoadData,它应该关闭负载的负载。如果您仍然发现表格会在几秒钟内加载,但表单需要 10 分钟才能完成更新,那么我们可能需要查看更多代码来找出占用时间的原因

【讨论】:

  • 非常感谢!我确实在代码运行之前分配了数据源,但是在查询代码的开头,我将其重新分配为 null。问题是在将每个新行添加到数据表后,我再次分配了数据源!我把它改到最后,现在时间减少到大约 1 分钟。再次感谢!
猜你喜欢
  • 2020-09-07
  • 1970-01-01
  • 2021-01-07
  • 2018-01-08
  • 2012-09-03
  • 1970-01-01
  • 2018-10-30
  • 1970-01-01
相关资源
最近更新 更多