本文主要是介绍【BUG】Linq只有一万多条记录执行查询时间却要6分钟,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 问题
- 问题代码
- 原因
- 解决
- 处理Bug的具体步骤
问题
IQueryable执行速度巨慢,一万多条记录查询要6分钟
问题代码
//只显示当月产量大于一百万(单位:米)的员工 qty单位千米var ReportUserNames = allReport.GroupBy(x => x.ReportUserName).Where(f => f.Sum(x => x.CwOkQty) > 1000).Select(x => x.Key)/*.ToList()*/;var testRsult = brokenReport.Where(f => ReportUserNames.Contains(f.ReportUserName)).GroupBy(x => new { x.ReportUserName, x.ReportUserTrueName }).Select(t => new Test{ReportUserName = t.Key.ReportUserName,ReportUserTrueName = t.Key.ReportUserTrueName,BrokenQty = t.Count()}).ToList();
原因
具体不详,会不会是如果不先查出来,翻译出的sql的相关代码会被查询n(同记录数)次呢
解决
提前把条件ToList()
//只显示当月产量大于一百万(单位:米)的员工 qty单位千米var ReportUserNames = allReport.GroupBy(x => x.ReportUserName).Where(f => f.Sum(x => x.CwOkQty) > 1000).Select(x => x.Key).ToList();resultData = brokenReport.Where(f => ReportUserNames.Contains(f.ReportUserName)).GroupBy(x => new { x.ReportUserName, x.ReportUserTrueName }).Select(t => new ApiProductionReportBrokenOutput{ReportUserName = t.Key.ReportUserName,ReportUserTrueName = t.Key.ReportUserTrueName,BrokenQty = t.Count(),}).ToList();
处理Bug的具体步骤
- 重现BUG
- 确定发生BUG的过程时都做了哪些动作
- 桌面检查:把自己的脑子作为CPU,运行从开始操作到出现BUG的操作、处理的数据,分析出现问题的原因
- 调试:确定问题出现的原因
- 确定解决方案
- 修复BUG
- 回归测试:确定已BUG已修复并没引入新问题
没有粉丝,没有评论,甚至连读者都没有。因为自己写的烂,因为自己水平有限,所以自己的作品一经发出就石沉大海了,得不到任何的回信,就好像自己写的东西是给自己看的。自己的作品怎么看都好像不够完美,全身的毛病,所以读者不喜欢也很正常对吧!
其实最让我开心的是有些读者们夸我文笔不错,或许是有人第一次这样夸我的缘故吧!又或许是我写的东西没什么人认可,我感受到了一种前所未有的激动,对于未来的憧憬,对自己写下去的动力。
因为有你们,我的写作之路才不孤独,因为有你们,我才能坚持到现在,如果有一天我真的写出圈了,或许我们可以整个交流会之类的,到时候促膝长谈。
“书山有路勤为径,学海无涯苦作舟。”写作苦是苦了点,整得我差点就想放弃了,不过还好有你们。我也不急着成功,因为没有个几十年如一日的坚持,哪能轻易成功?
茫茫文海无人意,天下有君识吾心。文海很孤独,但是有诸君,便足以令我至千里。
这篇关于【BUG】Linq只有一万多条记录执行查询时间却要6分钟的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!