java - Oracle 不同与 java (cqengine/set) : whose leads to better performances?

标签 java oracle oracle11g set cqengine

我有一个表,从中提取 8 列,这些列将是 pojo 的属性,例如 MyPojo。

我想删除重复项。

我想出了两个策略。

1-让 oracle 使用不同的关键字来处理这个问题

select distinct c1,c2...c8 from TABLE where...`

2-使用 cqengine ( https://code.google.com/p/cqengine/wiki/DeduplicationStrategies#Logical_Elimination_Strategy ) 在 java 中执行此操作:

DeduplicationOption deduplication = deduplicate(DeduplicationStrategy.LOGICAL_ELIMINATION);
ResultSet<Car> results = cars.retrieve(query, queryOptions(deduplication));

3-在 java 中使用一组执行此操作

simply storing rows inside of a Set<MyPojo>

从性能角度来看哪个更好?

最佳答案

决定这些事情的最好方法就是对其进行建模。

您的应用程序中的访问模式是什么?

  • 如果这是一次性请求:让数据库进行过滤。
  • 如果您希望收到许多此类相同的请求:让数据库进行过滤,并考虑在应用程序中缓存结果。
  • 如果您希望对同一数据集进行多种查询,请考虑将未过滤的数据集缓存到应用层,然后使用 CQEngine 进行查询。

不存在诸如“始终让数据库完成工作”之类的经验法则。如果您的应用程序以任何规模运行,您将不希望每个请求都访问数据库。您需要扩展您的应用程序层。

另一方面,您不应该过度设计。答案取决于您期望的流量和数据访问模式。

关于java - Oracle 不同与 java (cqengine/set) : whose leads to better performances?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31729740/

相关文章:

java - Java从自己的进程读取内存

sql - 从节点获取所有最后一级子节点(叶子节点)(分层查询 Oracle 11G)

oracle - Oracle 中是否支持具有 char 语义的列的默认值?

oracle - 未启用延迟的分割创建功能(ORA-00439)

java - 使用 Java 将 RTF 转换为 XML

java - 用于 base64 图像的自定义 Glide ModelLoader

java - 它真的是适配器模式吗?

java - o.h.engine.jdbc.spi.SqlExceptionHelper : ORA-00917: missing comma

sql - 如何使用 row_number 和分区依据查找重复值

linux - 如何从外网访问virtual box web服务器url