記一次list集合優化

2022-01-11 16:28:00 字數 730 閱讀 7763

已知某個列表list1有2000條資料,但是因為這個列表的某個欄位要從另乙個表查詢,所以根據乙個關聯的查詢條件查出來的另乙個list2有將近75000條資料,然後需要先迴圈第乙個list1,然後迴圈裡面取尋找list2裡面符合條件的,因為有某種業務邏輯,所以無法減少list2的sql查詢結果數量,所以到最後匯出2000條資料需要十幾秒,一般而言,計算機迴圈2000條資料可能不到1秒鐘,所以第乙個反應是優化list2的迴圈。

原來的**如下,開始使用的是通過linq來篩選條件,資料少的時候還可以,但是當資料多的時候,相當於迴圈2000*70000次,效率可想而知:

ilistitems = ioccontainer.get().select(where)//將近75000條資料

foreach (task task in tasklist)//2000條資料

dictionary> keyvaluebytask= items.groupby(s=>s.taskid).todictionary(s => s.key,s=>s.tolist());//轉為字典集合

foreach (task task in tasklist)

data.taskprogress = getcurrentstatus(wherelist);

datas.add(data);

}

**很簡單,也許很多人都知道,但是很多東西都是從無到有,所以以此記錄,加深自己的理解。

記一次SQL優化

問題發生在關聯主表a 4w資料量 和副表b 4w資料量 關聯欄位都是openid 當時用的是 left join 直接跑sql,卡死 伺服器也是差 優化1 改left join 為join,兩者區別就是left join查詢時已主表為依據,該是幾條就幾條 就算副表沒有關聯的資料 join如果副表沒有...

記一次oracle 優化過程

可能很多大牛都知道這個方法,但我是頭回遇到,因為專案原因,要寫很多查詢sql,對速度有要求,所以很注重sql語句的優化。像使用left join 速度會快一些等等一些算是比較常見的方法吧。近兩天做自測時發現了乙個問題,同樣一條語句,加了乙個條件竟然速度慢了那麼多,本身是乙個求彙總的sql語句,查全部...

記一次MySQL索引優化

兩張表是主 check drawings 從 check drawings img 關係。check drawings,主表資料 3591條。select count from check drawings 3591 check drawings img,從表資料107203條,資料量並不大,從表通...