大家好,欢迎来到IT知识分享网。
从几十个数据表中,按照的业务逻辑出报表,其中4个表的数据总行数有几千万,需查询出大概100万左右的数据。原来一个sql联表查所有数据。先拆分sql语句,分别查询数据到内存,然后再计算,组合成想要结果。
少数据量的数据,很快就可以查询出来。
几个大数据量的表,查询就比慢。
查询完所有数据后,再计算,最后导出成excel。这样整个导出用时可能5个小时。
做如下调整
1.sql调整,查询按照查询条件添加索引。先查询出总条数,再分页取每页的数据。分页取每页数据的时候,用多线程,同时取。这样每个表需要十几秒 就可以查询需要的数据。
2.sqlsugar 查询数据 ToListAsync() 的时候修改,修改为 ToListAsync(it=>new Student{name=it.name}) 不要用AutoMapper
3.数据量大的list<T>转换为Dictionary<T,T> ,之前用list查找数据,这样数量大了之后,非常慢。 这样很快就可以计算完数据。
再把计算好的数据,保存为excel文件。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/49689.html