我有一個項目列表和一個存儲產品信息和它的項目數據的地圖。 DB中大約有150k個項目和大約200k個產品(每個產品大約有1000到2000個項目映射到它)。 。在性能方面實現最佳功能
我需要纔是最重要的產品每一個項目出現在量的函數這是我所實現的功能:
public Map<Integer, Integer> getProductsNumberForItem(List<Item> itemsList,
Map<Integer, Map<Item, Integer>> itemsAmount) {
Map<Integer, Integer> result = new HashMap<>();
for (Item i : itemsList) {
int count = 0;
for (Map<Item, Integer> entry : itemsAmount.values()) {
if (entry.containsKey(i)) {
count++;
}
}
result.put(i.getID(), count);
}
return result;
}
它可以在我的測試數據庫,裏面有少量的數據不錯,但當我在真實數據上運行它時,它需要很多時間(例如:它已經運行了一個小時,仍然沒有完成)。從邏輯上來看它清楚,我基本上執行了太多的操作,但不知道如何優化。
任何建議表示讚賞。
您使用的是關係型數據庫嗎?如果你是那麼你應該能夠做大部分的工作。 – mrmcgreg
將聚合推送到數據庫。 –
@mrmcgreg是的,這只是我想到的,我可以檢索映射產品集的大小。 – Cap