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