C#導出大量數據到excel,怎么提升性能


一,要提升性能,我們先要知道耗時的地方在哪里

1,數據庫查詢,
2,把數據組合成新集合循環嵌套太多

二,那我們怎么優化呢?

一,數據庫查詢,
1》,數據庫查詢:如果數據量小,我們可以用臨時datatable,連表查詢,,可是如果是連表都是千萬級上億數據,就不建議用連表
那這個時候該怎么辦呢?
2》這個時候我們可以選擇先單表查詢,然后再循環體查詢自己所要的其他關聯數據,這個時候我們需要注意的點是什么?
3》減少數據庫查詢!!!!!!!!!這個是重點,那怎么減少呢?正常邏輯如下代碼,可是數據量很耗性能

foreach (var item in listST)
{
    var sModel= GetModel();  //如果這個方法每次都查詢一次數據庫,會很耗性能!!!導致循環循環很慢!,即時使用緩存也會很慢
    item.name = sModel.name;
}

4》我們可以換一種思路,優化如下代碼:

List<Student> listST = new List<Student>();
List<int> listInt = new List<int>();
int g = 0;
foreach (var item in listST)
{
    ////我們可以選擇每兩千條數據查詢一次
    ////保存成一個集合
    if (g % 2000 == 0)
    {
          listST = GetList($"id in ({string.Join(",", listST.Skip(g).Take(2000).Select(m => m.id).Distinct().ToArray())})", 2000, 1, "name,Id");
    }
    var sModel = listST.FirstOrDefault(m => m.id == item.id);
    item.name = sModel.name;
    g++;
}

 


二,把數據組合成新集合循環嵌套太多,這個就是優化邏輯,減少循環嵌套


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM