用HashMap代替数据库进行java搜索
我必须根据数据库中的1个值查找价格。数据库表包含40000个id、名称、minvalue、maxvalue和price的条目。我查找值2的正确价格,例如
SELECT name, price FROM priceTable WHERE minvalue <= 2 AND maxvalue >= 2;
因为我必须查找许多价格(10000或更多),我考虑使用HashMap之类的东西,所有的表数据都在里面,所以我只有一个数据库请求,其余的将在本地完成
有人有这方面的经验吗?是否可以将SQL请求“转换”为高效的HashMap查找?我无法使用该值作为键进行查找,因为上面示例中的匹配条目具有minvalue 1和maxvalue 3。因此不会有一个键“2”
# 1 楼答案
Java提供了
NavigableMap
接口,该接口提供了一些有趣的导航方法,包括:subMap(fromKey::inclusive, toKey::exclusive)
headMap(toKey, boolean inclusiveOrNot)
tailMap(fromKey, boolean inclusiveOrNot)
但它只适用于一种类型的键(为了方便起见,假设它在某种程度上等同于一个sql索引;这里需要两个索引)。因此,在您的情况下,您需要使用两个不同的映射来存储
priceTable
,一个用于minValue,另一个用于maxValue,例如:然后,要获得
minvalue <= 2 AND maxvalue >= 2
,您必须运行:结果是这些贴图的交集(请参见here)