一,要提升性能,我們先要知道耗時的地方在哪里
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++; }
二,把數據組合成新集合循環嵌套太多,這個就是優化邏輯,減少循環嵌套