亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

java - 判斷數據在數據庫中是否已存在.

瀏覽:104日期:2024-01-02 14:58:41

問題描述

今天下午和同事發生因為判斷數據是否在數據庫中已存在產生分歧.簡易代碼如下:

//觀點一,先取出數據庫中已存在ID存入內存,再進行判斷 //數據太多情況,內存爆炸 DateTable dt = ExcuteSQL(’SELECT ID FROM TABLE’);//List為數據集,已經去重 foreach(var item in List){//觀點二,在for循環中根據ID查詢是否已存在//for循環執行數據庫?沒這么干過DateTable dt = ExcuteSQL(string.format(’SELECT ID FROM TABLE WHERE ID = {0}’,item.ID));//判斷是否在dt中存在...bool ISContain...//不存在 if(!ISContain){ //加入事物SQL列表 SQLList.Add(’INSERT INTO ........’); } }//執行事物 ....

問題解答

回答1:

其實第一個你要拿實際數據量來估算,如果ID是Long類型,數據量100W,也才只有 8byte * 100W = 7.629 megabytes。

第二個肯定要不得,在循環中對每個ID去查詢。

回答2:

推薦方法二,但這樣做查詢會比較快:

SELECT id FROM table WHERE id IN (?, ?, ?, ...)

注意,不同的數據庫對參數是有限制的,?最好不要超過1千個。如果你需要判斷1萬個id,就用10次這樣的查詢。

回答3:

利用 @auntyellow 同學所說的方法應該比較好,批量查詢。當ID比較多時,考慮是否可以按其它的批量方式去查?比如一次拿一段時間的所有id,把方法一稍加改進來實現。感覺不管是方法一還是方法二都走了極端,所以好的解決方法應該是中合兩者的結果。

回答4:

https://www.zhihu.com/questio...

回答5:

建議是使用先把id從數據庫中取出來,然后在內存中比較的方法,這樣可以減少數據庫的訪問。

回答6:

可不可以分段 取到內存里 這樣能減輕內存占用

標簽: java
相關文章:
主站蜘蛛池模板: 久久99国产精品久久99无号码 | 国产丝袜美腿高跟白浆 | 亚洲综合激情另类专区 | 久久入| 日韩日韩日韩日韩日韩 | 中国黄色一级毛片 | 亚洲精品一区二区三区人妖 | 黄色影视在线观看 | 国内精品自在自线在免费 | 日日夜操| 亚洲色图欧美一区 | 毛片网站在线观看 | 欧美成人影院 在线播放 | 欧美另类偷自拍视频二区 | 国产欧美在线观看精品一区二区 | 国产精品永久免费视频 | 热久久综合这里只有精品电影 | 美国一级做a一级视频 | av18在线播放 | 韩国一级毛片在线高清免费 | 狠狠色丁香九九婷婷综合五月 | 亚洲国产综合专区在线播一一 | 亚洲男人的天堂久久香蕉 | 视频一区二区三区欧美日韩 | 真实国产乱子伦对白视频37p | jul724青木玲中文字幕 | 国产精品夫妇久久 | 青青青草国产 | 麻豆最新网址 | 亚洲图片一区二区三区 | 日韩免费毛片全部不收费 | a级特黄毛片免费观看 | 丝袜亚洲综合 | 免费中文字幕乱码电影麻豆网 | 久久午夜精品视频 | 免费网站看v片在线成人国产系列 | 亚洲精品国产第七页在线 | 婷婷丁香色综合图亚洲 | 免费国产草莓视频在线观看黄 | 久操香蕉 | 国产成人久久一区二区三区 |