Я очень новичок в Java и пытаюсь реализовать возможность просмотра документов.Пользователь, принадлежащий к определенной группе, может просматривать документы определенных типов, которые назначены для типов документов проверки этой группы.Пользователь не может просматривать собственные документы.Когда пользователь принадлежит ко многим группам, которые могут просматривать много типов документов, иногда я получаю около 1500 документов, которые удовлетворяют условию запроса.Я пробовал пейджинг, но все еще есть некоторая видимая задержка на первой странице.Когда я получаю все документы (~ 1500), это занимает около 3000+ мс.Я не уверен, много это или нет.Мой JPA-запрос приведен ниже.
@Query("SELECT d FROM Document d WHERE d.id IN (SELECT DISTINCT d.id FROM Document d" +
" JOIN d.documentType dt" +
" JOIN dt.reviewUserGroups rug" +
" JOIN rug.users u WHERE u.username = :username" +
" AND d.documentState = it.akademija.wizards.enums.DocumentState.SUBMITTED" +
" AND u <> d.author" +
" AND (lower(CONCAT(d.author.firstname, ' ', d.author.lastname)) like %:searchFor% " +
" OR lower(d.title) like %:searchFor%" +
" OR lower(d.description) like %:searchFor%" +
" OR lower(d.id) like %:searchFor%" +
" OR lower(dt.title) like %:searchFor%))")
Page<Document> getDocumentsForReview(@Param(value = "username") String username,
@Param(value = "searchFor") String searchFor,
Pageable pageable);
Пожалуйста, дайте мне знать, каков наилучший способ повысить производительность, потому что у меня есть ощущение, что этот тип поиска использует «как» несколько раз в запросе и объединяет множествоСущности не правильные.