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