diff --git a/src/main/java/org/caosdb/server/query/Query.java b/src/main/java/org/caosdb/server/query/Query.java
index b4ad5da0fe2e00f420d0b2e90f9dbfed1892bcb3..b9fe03dd330e66073edfcd8c238c5ce7b3306b8a 100644
--- a/src/main/java/org/caosdb/server/query/Query.java
+++ b/src/main/java/org/caosdb/server/query/Query.java
@@ -800,17 +800,24 @@ public class Query implements QueryInterface, ToElementable, TransactionInterfac
     }
     cachable = false;
     try (final Statement stmt = this.getConnection().createStatement()) {
+      // final ResultSet rs = stmt.executeQuery("SELECT id from `" + resultSet + "`");
 
+      String logstr = "";
       final String query =
           ("SELECT t1.id, entity_acl.acl from (select entities.id, entities.acl from entities where id in (select id from `"
               + resultSet
               + "`) ) as t1 inner join entity_acl on t1.acl=entity_acl.id;");
+      logstr += "SQL query: " + query + "\n";
+      long begin_t = System.currentTimeMillis();
 
       final ResultSet rs = stmt.executeQuery(query);
       final HashMap<String, Boolean> acl_cache = new HashMap<String, Boolean>();
       final List<Integer> toBeDeleted = new LinkedList<Integer>();
       final List<Integer> allrs = new ArrayList<Integer>();
+      logstr += "Got rs: " + (System.currentTimeMillis() - begin_t) + " s\n";
+      long count = 0;
 
+      long count2 = 0;
       // @todo here, we must operate on sql site. only retrieve different permissions
       while (rs.next()) {
         final long t1 = System.currentTimeMillis();
@@ -818,10 +825,12 @@ public class Query implements QueryInterface, ToElementable, TransactionInterfac
         if (id <= 99) {
           continue;
         }
+        count2 += 1;
 
         allrs.add(id);
         final String acl_str = bytes2UTF8(rs.getBytes("ACL"));
         if (!acl_cache.containsKey(acl_str)) {
+          count += 1;
           acl_cache.put(
               acl_str,
               EntityACL.deserialize(acl_str)
@@ -835,8 +844,17 @@ public class Query implements QueryInterface, ToElementable, TransactionInterfac
         final long t2 = System.currentTimeMillis();
         this.addBenchmark("filterEntitiesWithoutRetrievePermission", t2 - t1);
       }
+      logstr += "done with looking up acl: " + (System.currentTimeMillis() - begin_t) + " s\n";
+
+      allrs.sort(Comparator.naturalOrder());
+      logstr += "iterations: " + count + "\n";
+      logstr += "iterations: " + count2 + "\n";
+
+      logstr += "Full time: " + (System.currentTimeMillis() - begin_t) + "\n";
+
+      this.logger.warn(logstr);
+
       rs.close();
-      // TODO is there a better way than the following?
       for (final Integer id : toBeDeleted) {
         stmt.execute("DELETE FROM `" + resultSet + "` WHERE id = " + id);
       }