2012-11-13 26 views
2

我正在將數據從一個數據庫遷移到另一個數據庫。Java HashMap <Integer,Integer>還是一個mysql臨時表有什麼更高效?

我正在遷移的數據是對產品版本的評論。

每個評論都有很多版本。有23K個不同的評論,而60k版本的評論意味着大約每3個版本共享一個評論。

在我的Java應用程序中,主機數據庫包含具有與評論db上的評論關聯的reviewId的版本。

我有一個Hashmap<Integer, Integer>,每次我從review db導入評論時,我都會使用map.put(reviewId, hostId)將它添加到地圖中。

在我從審查db導入之前,我檢查它是否在hashmap中,如果它是我使用已經導入的審閱。一段時間後,這開始變得非常慢,我想知道是否使用臨時表更有效。或者如果有另一種更有效的方法。

下面是代碼: https://gist.github.com/4064373

想法,建議?

+6

*一段時間後會變慢嗎?我懷疑它是散列圖本身。弄清楚你的應用程序花費的時間。 –

回答

2

在最好的情況下,MySQL臨時表也會作爲哈希映射來實現。但與Java哈希映射相反,該實現將準備處理大量的列。你有與MySQL溝通的開銷。因此,要回答您的問題的標題,我希望如果您從應用程序訪問您的數據,Java HashMap將更加高效。對於SQL Server中的數據關聯,事情是不同的。

但是Jon Skeet指出in his comment,從整數到整數的簡單哈希映射不應該是您描述的那種應用程序的嚴重性能瓶頸。所以有可能是其他的東西寫得不夠理想。我乍看之下並沒有發現任何明顯的問題,但是接下來有很多方法可以調用,理論上,其中任何一個方法都可能會受到指責。

相關問題