diff --git a/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java b/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java index 23862e43d6158ffb6c6ce00b42a2606ec26b085c..aed4c2154710057af1a4cbcfc25abefddcfed6c5 100644 --- a/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java +++ b/src/main/java/org/olat/repository/manager/RepositoryEntryMyCourseQueries.java @@ -200,6 +200,11 @@ public class RepositoryEntryMyCourseQueries { } //user course informations //efficiency statements + + // join seems to be quicker + if(params.getMarked() != null && params.getMarked().booleanValue()) { + sb.append(" inner join ").append(MarkImpl.class.getName()).append(" as mark2 on (mark2.creator.key=:identityKey and mark2.resId=v.key and mark2.resName='RepositoryEntry')"); + } sb.append(" where "); needIdentityKey |= appendMyViewAccessSubSelect(sb, roles, params.getFilters(), params.isMembershipMandatory()); @@ -229,11 +234,6 @@ public class RepositoryEntryMyCourseQueries { if (params.isResourceTypesDefined()) { sb.append(" and res.resName in (:resourcetypes)"); } - if(params.getMarked() != null && params.getMarked().booleanValue()) { - sb.append(" and exists (select mark2.key from ").append(MarkImpl.class.getName()).append(" as mark2 ") - .append(" where mark2.creator.key=:identityKey and mark2.resId=v.key and mark2.resName='RepositoryEntry'") - .append(" )"); - } String author = params.getAuthor(); if (StringHelper.containsNonWhitespace(author)) { // fuzzy author search