Я нашел несколько решений в Интернете, но в аспекте производительности это не то, что я искал. У меня есть таблица с записями более 10 000 000 записей. Мне нужно только для чтения 150 результатов.Получить определенное количество записей из базы данных - JPA (Impove performance)
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();
Этот код выполняет эту работу. Но он все еще читает все 10 000 000 записей из db , что делает огромную перегрузку на веб-сервере. Могу ли я просто ограничить запрос, например,
SELECT *FROM Persons LIMIT 5;
Есть ли способ ограничить результат самим запросом ?? Любая помощь очень ценится.
спасибо.
Вы можете попробовать что-то вроде 'ВЫБРАТЬ TOP 150 * FROM лиц ORDER BY ID DESC' – SaviNuclear
@saviNuclear вы имеете в виду именованный запрос ?? – bynu022
LIMIT явно не является ключевым словом JPQL, но не является «*» действительным ... см. Ссылку на JPQL. MaxResults/FirstResult - это то, что вы установили для JPQL. –