我有一个项目列表和一个存储产品信息和它的项目数据的地图。 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