查询sql数据库中的索引表与使用自己的HashMap

时间:2011-01-12 14:44:48

标签: java sql database performance h2

我在java中有一个性能问题。

我在sql数据库中有一个很大的索引表(在这种情况下是H2数据库,但问题可以应用于任何sql数据库)。

我必须经常通过此索引在此表中找到项目。

现在我想知道什么更快:

  • 对sql数据库的查询
  • 为我最常使用的字段制作自己的hashmap

有没有人对此有所了解? (在创建一些速度测试并找到myselve之前)。

3 个答案:

答案 0 :(得分:2)

在HashMap中查找会更快,但如果数据发生变化,您将面临管理数据和更新缓存的开销,更不用说决定要缓存哪些数据位了。

请注意,您的数据库可能会对其自身进行一些缓存,并且常见查询可能会非常快速地返回数据,甚至无需通过查询解析器,更不用说击中磁盘。

答案 1 :(得分:1)

您应该能够在1-10毫秒内实现索引SQL查询,并且HashMap上的查找应该小于1微秒。

如果你已经有一个SQL数据库,我只会使用它,除非你知道你必须在内存中复制数据。

答案 2 :(得分:1)

使用您自己的HashMap进行维护将使您的生活变得艰难    如果您有太多条目可以容纳在内存中怎么办?    如果您的应用程序重新启动怎么办?    如果您需要搜索另外一个您没想到的参数,该怎么办?    如果您需要搜索param1 = val1和param2 = val2

,该怎么办? 如果您维护正确的索引集,

DB会提供这些开箱即用的功能。 而且大多数现代数据库都会在其缓存中保存经常查询的数据,因此事情应该更快。