EF Core取出数据之后的数据循环速度优化


客户有个需求,导出页面一个月的数据,大概30W的数据需要一次性导出到EXCEL,因为之前做地太急,没有做异步导出。所以因为循环量过大,超时(1分钟超时)报错。

表结构是 一个 父表,一个子表,父表和子表是一对多的关系,还有一些其他的配置表。

优化步骤1:去掉多余的join,只保留父表,子表两个表查出数据,配置表全部取出放到内存中

优化步骤2:用.AsParallel().ForAll()方法异步循环,异步循环需要用线程安全的集合,不然会丢失数据

完成上面两个步骤后,结果还是超时,然后发现是配置表是List类型导致的,在循环内通过List取查数据,效率太低

优化步骤3:把配置表数据全部转成Dictionary,然后通过字典取配置表数据。

30万的数据在客户的环境里,导出大概用了50多秒,差一点超时,不过好歹是能导出了


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM