2011-05-06 33 views
1

我想了解如何將解決方案實施到以下的一些建議 我有一個對象列表。 (數百個元素,如500-1000,或更多)。 我有這樣的對象的記錄數據庫中的表。數據庫有百萬條記錄。 我需要發送一個對象的列表到數據庫,並報告與重複的列表,如果找到。 初始解決方案,從數據庫加載到Java,然後比較列表 - 是不好的解決方案。我們有內存不足的問題,試圖從數據庫加載所有數百萬條記錄。查找我的列表和數據庫中的內容之間的重複項

+2

這取決於如此多的東西,如數據庫使用,語言,平臺等。請閱讀以下內容:http://tinyurl.com/so-hints – Oded 2011-05-06 18:20:06

回答

3

在對象中是否存在可以在數據庫中查找的標識符? 如果是的話,你可以做到以下幾點:

  1. 獲取標識符爲對象的名單

  2. 把它們放入一個SELECT語句,看看哪些是已經在數據庫

  3. 認沽將尚未在表中的對象轉換爲INSERT語句

如果您得到的列表1太大, SELECT,你也可以把它們放到一個臨時表中,並用對象表做一個JOIN語句。

乾杯

+2

+1 IMO,最後一條聲明*是*解決方案。我不會嘗試一次通過500-1000個按鍵。最好將它們填充到登臺表中,並利用數據庫來查詢數百萬行。 – Thomas 2011-05-06 18:32:36

+0

非常感謝。 特別是加入查詢部分。第一部分是我去過的地方,但是處理「1」中數百個條目的方式讓人擔憂。最後一部分非常有幫助。 – 2011-05-09 14:11:06