java - 什么时候 select 比 for 快?

标签 java database performance hibernate jpa

想象一下这种情况,我有一个实体的 ID,并且有一个喜欢的列表,其中包含一些同类实体。要找到实体,什么时候在链表中执行 for 或在数据库中执行选择更快?

我的意思是,例如,当我在链表中​​有大约 5 个实体时,我想 for 会更快,而当我有数百万个实体时,select 会更快。

但是当 select 开始比 for 快时?

最佳答案

内存中的数据结构总是比打开套接字、运行查询和发回响应更快。

一个好的查询可能会在 10-100 毫秒内运行,而一个 Java 操作可能需要 100 纳秒。

使用 LinkedList 可能不会产生最佳性能。类似于使用数据库索引,您可以改用 HashMap,并通过其 id 映射实体:

Map<Long, Entity> idEntityMap = new HashMap<>;
idEntityMap.put(entity.getId(), entity);

因此,当您搜索一个实体时,您只需运行:

Entity entity = idEntityMap.get(entityId);

该调用将首先识别实体所在的 Map 存储桶,并且只对该存储桶中包含的实体进行对象比较。

总而言之,内存操作非常快,但您需要使用适合您用例的数据结构。

关于java - 什么时候 select 比 for 快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26346955/

相关文章:

javascript - 在 D3 力导向图中高效计算凸包

PHP 和 SQL : Function to insert and update tables not working

android - 检查 Android SQLite 数据库中的特定列

java - 在 Android 中存储数据的最佳方式是什么?

java - 找到成对产品的最大和

php - 一次更新数据库中的多条记录

javascript - 用于单页 Web 应用程序的 New Relic 真实用户监控

java - 如果网络速度很慢,Java HTTP 客户端是否会占用 CPU

java - 将 tiff 转换为缓冲图像 (Java)

JavaFX ImageView 图像未显示