我在网上找到了几个解决方案,但在性能方面,这些都不是我所寻找的。我有一个记录超过10,000,000条记录的表。我需要只读取最近的150个结果。
query.select(trailRoot).distinct(Boolean.TRUE)
.where(buildPredicateForAuditTrail(auditTrailCriteria, criteriaBuilder, trailRoot));
final TypedQuery<AuditTrail> typedQuery = entityManager.createQuery(query);
return typedQuery.setFirstResult(auditTrailCriteria.calculateFirstResultIndex())
.setMaxResults(150).getResultList();
这段代码完成了这项工作。但是它仍然从db 读取所有的10,000,000条记录,这使得web服务器过载。我可以像
那样简单地限制查询吗?SELECT *FROM Persons LIMIT 5;
是否有一种方法来限制查询本身的结果?如有任何帮助,不胜感激。
谢谢。
为什么不能将第一个结果设置为特定的偏移量?
query.setFirstResult(firstResult);
query.setMaxResults(maxResults);
看一下lazycardatmodel .java http://www.primefaces.org/showcase/ui/data/datatable/lazy.xhtml