我希望在Oracle的支持下检索一个JpaRepository
的大型数据集
表。选择是返回实体的集合(List
)或Page
,然后逐步执行结果。请注意 - 我必须使用此集合中的每条记录,只需一次。这不是“从大型数据集中寻找第一个 - 并且返回”操作
虽然分页的想法很有吸引力,但性能会很糟糕(n ^ 2),因为对于每个查询的页面,oracle必须提取前n-1页,因为随着我对结果的深入了解,性能会逐渐变差组。
我对List
替代方案的理解是整个结果集将被加载到内存中。对于oracle JPA spring没有支持结果集。
所以这是我的问题
List
使用Spring Data的方式的理解是否正确?如果不是,那么我将只使用List
。答案 0 :(得分:1)
SDJ中的可分页方法每次请求都会调用额外的select count(*) from ...
。我认为这是问题的原因。
为避免这种情况,您可以使用Slice
代替Page
作为返回参数,例如:
Slice<User> getAllBy(Pageable pageable);
或者您甚至可以使用List
个实体进行分页:
List<User> getAllBy(Pageable pageable);
其他info