diff --git a/arkindex/documents/tasks.py b/arkindex/documents/tasks.py
index d42a9cbfb0b394db1f50b94c9b3fd60a5ebbcaa9..9712f69f41186d09293c2301f94bd7436eed12e0 100644
--- a/arkindex/documents/tasks.py
+++ b/arkindex/documents/tasks.py
@@ -51,8 +51,9 @@ def corpus_delete(corpus_id: str) -> None:
         # Process-DataFile M2M with implicit model
         Process.files.through.objects.filter(process__corpus_id=corpus_id),
         Process.files.through.objects.filter(datafile__corpus_id=corpus_id),
-        # Worker activities
-        WorkerActivity.objects.filter(Q(element__corpus_id=corpus_id) | Q(process__corpus_id=corpus_id)),
+        # Worker activities are deleted in two queries, as filtering using OR is slower
+        WorkerActivity.objects.filter(element__corpus_id=corpus_id),
+        WorkerActivity.objects.filter(process__corpus_id=corpus_id),
         corpus.files.all(),
         MetaData.objects.filter(element__corpus_id=corpus_id),
         EntityLink.objects.filter(role__corpus_id=corpus_id),
diff --git a/arkindex/sql_validation/corpus_delete.sql b/arkindex/sql_validation/corpus_delete.sql
index 288247494a691462b03999095a56da28b21da383..423afc32afda6f599a6e4b2dea09c62b8d18b71a 100644
--- a/arkindex/sql_validation/corpus_delete.sql
+++ b/arkindex/sql_validation/corpus_delete.sql
@@ -64,9 +64,15 @@ WHERE "process_workeractivity"."id" IN
         (SELECT U0."id"
          FROM "process_workeractivity" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
-         INNER JOIN "process_process" U3 ON (U0."process_id" = U3."id")
-         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
-		OR U3."corpus_id" = '{corpus_id}'::uuid));
+         WHERE U1."corpus_id" = '{corpus_id}'::uuid);
+
+DELETE
+FROM "process_workeractivity"
+WHERE "process_workeractivity"."id" IN
+        (SELECT U0."id"
+         FROM "process_workeractivity" U0
+         INNER JOIN "process_process" U1 ON (U0."process_id" = U1."id")
+	 WHERE U1."corpus_id" = '{corpus_id}'::uuid);
 
 DELETE
 FROM "process_datafile"
diff --git a/arkindex/sql_validation/corpus_delete_top_level_type.sql b/arkindex/sql_validation/corpus_delete_top_level_type.sql
index 5782b2cc8dd4bf29d7eaa9571c204cd1df0da790..316ef633a8c99af797cad6b7f3df6f8bc7bd0051 100644
--- a/arkindex/sql_validation/corpus_delete_top_level_type.sql
+++ b/arkindex/sql_validation/corpus_delete_top_level_type.sql
@@ -68,9 +68,15 @@ WHERE "process_workeractivity"."id" IN
         (SELECT U0."id"
          FROM "process_workeractivity" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
-         INNER JOIN "process_process" U3 ON (U0."process_id" = U3."id")
-         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
-		OR U3."corpus_id" = '{corpus_id}'::uuid));
+         WHERE U1."corpus_id" = '{corpus_id}'::uuid);
+
+DELETE
+FROM "process_workeractivity"
+WHERE "process_workeractivity"."id" IN
+        (SELECT U0."id"
+         FROM "process_workeractivity" U0
+         INNER JOIN "process_process" U1 ON (U0."process_id" = U1."id")
+	 WHERE U1."corpus_id" = '{corpus_id}'::uuid);
 
 DELETE
 FROM "process_datafile"