我在java中有一个性能问题。
我在sql数据库中有一个很大的索引表(在这种情况下是H2数据库,但问题可以应用于任何sql数据库)。
我必须经常通过此索引在此表中找到项目。
现在我想知道什么更快:
有没有人对此有所了解? (在创建一些速度测试并找到myselve之前)。
答案 0 :(得分:2)
在HashMap中查找会更快,但如果数据发生变化,您将面临管理数据和更新缓存的开销,更不用说决定要缓存哪些数据位了。
请注意,您的数据库可能会对其自身进行一些缓存,并且常见查询可能会非常快速地返回数据,甚至无需通过查询解析器,更不用说击中磁盘。
答案 1 :(得分:1)
您应该能够在1-10毫秒内实现索引SQL查询,并且HashMap上的查找应该小于1微秒。
如果你已经有一个SQL数据库,我只会使用它,除非你知道你必须在内存中复制数据。
答案 2 :(得分:1)
使用您自己的HashMap进行维护将使您的生活变得艰难 如果您有太多条目可以容纳在内存中怎么办? 如果您的应用程序重新启动怎么办? 如果您需要搜索另外一个您没想到的参数,该怎么办? 如果您需要搜索param1 = val1和param2 = val2
,该怎么办? 如果您维护正确的索引集,DB会提供这些开箱即用的功能。 而且大多数现代数据库都会在其缓存中保存经常查询的数据,因此事情应该更快。