我在java中有一个性能问题。
我在 sql 数据库中有一个大型索引表(在本例中为 H2 数据库,但该问题可以应用于任何 sql 数据库)。
我必须经常通过这个索引在这个表中找到项目。
现在我想知道什么更快:
- sql数据库上的查询
- 为我最常使用的字段制作自己的哈希图
有人对此有任何想法吗?(在创建一些速度测试并自己找出之前)。
我在java中有一个性能问题。
我在 sql 数据库中有一个大型索引表(在本例中为 H2 数据库,但该问题可以应用于任何 sql 数据库)。
我必须经常通过这个索引在这个表中找到项目。
现在我想知道什么更快:
有人对此有任何想法吗?(在创建一些速度测试并自己找出之前)。
在 HashMap 中查找会更快,但如果数据发生变化,您将需要管理数据和更新缓存,更不用说决定要缓存哪些数据位了。
请注意,您的数据库可能会对其自己进行一些缓存,并且常见查询可能会非常快速地返回数据,甚至无需通过查询解析器,更不用说访问磁盘了。
您应该能够在 1-10 毫秒内实现索引 SQL 查询,并且对 HashMap 的查找应该小于 1 微秒。
如果您已经有一个 SQL 数据库,除非您知道必须在内存中复制数据,否则我只会使用它。
使用您自己的 HashMap 来维护会让您的生活变得艰难 如果您有太多条目无法在内存中容纳怎么办 如果您的应用程序重新启动怎么办?如果您需要搜索另一个您没有想到的参数怎么办?如果您需要像 param1=val1 和 param2=val2 这样的搜索怎么办
如果您维护正确的索引集,DB 会开箱即用地提供这些东西。大多数现代数据库都将经常查询的数据保存在其缓存中,因此速度应该更快。