我要讀取資料庫的資料,有1000萬行左右,只有一個字串欄位,每條資料差不多10個字符,讀出來放到list里后發現程式占用記憶體巨大,差不多600多M,有沒有記憶體占用少的方法?讀出來后主要的操作就是查找某個字串是否在list中。
uj5u.com熱心網友回復:
使用sql 查詢不更好嗎,干嘛取到記憶體再查找呀uj5u.com熱心網友回復:
1000萬行讀出來。。。本來就有點奇怪。uj5u.com熱心網友回復:
為啥要讀出來放記憶體在判斷,直接資料庫where 條件一下不香嗎
uj5u.com熱心網友回復:
方法當然是有的,任何合格的程式員都有辦法。哦,寫“輕代碼“的程式員不算。
uj5u.com熱心網友回復:
因為我程式要不停的處理資料,不可能每次都查詢資料庫,那樣更占用系統資源uj5u.com熱心網友回復:
我感覺現在論壇里的人有些陰陽怪氣的,要是你方法,就提示一下,我很感激,不想幫忙也就算了,何必浪費你寶貴的時間,好像自己很nb哄哄的。uj5u.com熱心網友回復:
應該是讓資料庫幫你查詢字串是否在表的欄位中!這不是下載檔案,就是個普通查詢而已
uj5u.com熱心網友回復:
可以每次都讀資料庫uj5u.com熱心網友回復:
或你放到訊息對列里uj5u.com熱心網友回復:
我詳細說一下我的需求吧,我是做爬蟲,每爬一個頁面要比對一下這個頁面是否已經爬過,這個頁面的網址通過某種處理后存到資料庫中,1秒可能要爬5個頁面左右,我不明白為什么大家都建議直接查資料庫嗎?難道一秒鐘查詢5次千萬級別的資料庫比查記憶體效率高?uj5u.com熱心網友回復:
并且這個欄位也沒有建索引啊,查一次肯定耗時不止一秒。uj5u.com熱心網友回復:
初始化List的時候給個盡量大的容量值試試。比如:
List<string> a = new List<string>(10000000);
List內部是array實作的,如果容量不足,則每插入一條就new一個新的array,舊的array,GC不會立馬回收,就會造成記憶體浪費。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/248341.html
標籤:C#
