我有一个表,从中提取 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/