我在互聯網上發現了幾種解決方案,但在性能方面,這些不是我搜索的內容。我有一張記錄超過10,000,000條記錄的表格。我需要只讀過去的150個結果。從數據庫中檢索特定數量的記錄 - JPA(Impove性能)
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;
有沒有辦法通過查詢本身來限制結果? 任何幫助是高度讚賞。
謝謝。
你可以嘗試像'SELECT TOP 150 * FROM人員ORDER BY ID DESC' – SaviNuclear
@saviNuclear你的意思是一個命名查詢? – bynu022
LIMIT顯然不是JPQL關鍵字,也不是「*」有效......請參閱任何JPQL參考。 MaxResults/FirstResult是您爲JPQL –