diff --git a/arkindex/documents/api/elements.py b/arkindex/documents/api/elements.py
index 1c9c5cea43099c95aa28b370519fc8addb190f3f..729b0b0915aafbdf6b71ae308b33c5aa8d36fccc 100644
--- a/arkindex/documents/api/elements.py
+++ b/arkindex/documents/api/elements.py
@@ -1767,7 +1767,7 @@ class WorkerResultsDestroy(CorpusACLMixin, DestroyAPIView):
         worker_results_delete(
             corpus_id=corpus.id,
             version=worker_version,
-            parent_id=element_id,
+            element_id=element_id,
             user_id=self.request.user.id,
         )
 
diff --git a/arkindex/documents/tasks.py b/arkindex/documents/tasks.py
index 01599ac8d1f89b029418b8e00176db02b2c2b808..d0f4bf94f99922c5573a036d0d4b14e748b434b6 100644
--- a/arkindex/documents/tasks.py
+++ b/arkindex/documents/tasks.py
@@ -85,10 +85,14 @@ def element_trash(queryset: ElementQuerySet, delete_children: bool) -> None:
 
 
 @job('high', timeout=settings.RQ_TIMEOUTS['worker_results_delete'])
-def worker_results_delete(corpus_id: str, version_id: Optional[str], parent_id: Optional[str]) -> None:
+def worker_results_delete(
+        corpus_id: str,
+        version_id: Optional[str],
+        element_id: Optional[str],
+        include_children: bool = True) -> None:
     """
     Recursively delete all Worker Results produced by any WorkerVersion or a specific one
-    on a whole corpus or under a specified parent element (parent element included).
+    on a whole corpus, under a specified parent element (parent element included), or on a single element.
     """
     elements = Element.objects.filter(corpus_id=corpus_id)
     classifications = Classification.objects.filter(element__corpus_id=corpus_id)
@@ -124,17 +128,31 @@ def worker_results_delete(corpus_id: str, version_id: Optional[str], parent_id:
         metadata = metadata.exclude(worker_version_id=None)
         worker_activities = worker_activities.exclude(worker_version_id=None)
 
-    # When a parent ID is defined, filter using element paths to match the parent and all its descendants
-    if parent_id:
-        elements = elements.filter(Q(id=parent_id) | Q(paths__path__overlap=[parent_id]))
-        classifications = classifications.filter(Q(element_id=parent_id) | Q(element__paths__path__overlap=[parent_id]))
-        transcriptions = transcriptions.filter(Q(element_id=parent_id) | Q(element__paths__path__overlap=[parent_id]))
-        # The same filter is applied to both TranscriptionEntity querysets
-        transcription_entities_filter = Q(transcription__element_id=parent_id) | Q(transcription__element__paths__path__overlap=[parent_id])
-        transcription_entities = transcription_entities.filter(transcription_entities_filter)
-        worker_transcription_entities = worker_transcription_entities.filter(transcription_entities_filter)
-        metadata = metadata.filter(Q(element_id=parent_id) | Q(element__paths__path__overlap=[parent_id]))
-        worker_activities = worker_activities.filter(Q(element_id=parent_id) | Q(element__paths__path__overlap=[parent_id]))
+    if element_id:
+        # include_children causes a deletion *only* on the element's descendants.
+        # To also delete on the element itself, we will call this task synchronously with the same arguments and include_children=False.
+        # This is used to avoid filtering by Q(id=element_id) | Q(paths__path__overlap=[element_id]) all at once,
+        # which was found to be up to 30× slower than running two separate deletions.
+        if include_children:
+            elements = elements.filter(paths__path__overlap=[element_id])
+            classifications = classifications.filter(element__paths__path__overlap=[element_id])
+            transcriptions = transcriptions.filter(element__paths__path__overlap=[element_id])
+            # The same filter is applied to both TranscriptionEntity querysets
+            transcription_entities_filter = Q(transcription__element__paths__path__overlap=[element_id])
+            transcription_entities = transcription_entities.filter(transcription_entities_filter)
+            worker_transcription_entities = worker_transcription_entities.filter(transcription_entities_filter)
+            metadata = metadata.filter(element__paths__path__overlap=[element_id])
+            worker_activities = worker_activities.filter(element__paths__path__overlap=[element_id])
+        else:
+            elements = elements.filter(id=element_id)
+            classifications = classifications.filter(element_id=element_id)
+            transcriptions = transcriptions.filter(element_id=element_id)
+            # The same filter is applied to both TranscriptionEntity querysets
+            transcription_entities_filter = Q(transcription__element_id=element_id)
+            transcription_entities = transcription_entities.filter(transcription_entities_filter)
+            worker_transcription_entities = worker_transcription_entities.filter(transcription_entities_filter)
+            metadata = metadata.filter(element_id=element_id)
+            worker_activities = worker_activities.filter(element_id=element_id)
 
     elements.trash()
     classifications.delete()
@@ -145,6 +163,18 @@ def worker_results_delete(corpus_id: str, version_id: Optional[str], parent_id:
     metadata.delete()
     worker_activities.delete()
 
+    if element_id and include_children:
+        # Delete worker results on the parent element itself only after the deletion on its descendants has been done.
+        # This deletion could cause the parent element to be deleted if it is considered to be a worker result itself,
+        # which would remove the related ElementPaths and cause us to loose track of which child elements
+        # we were supposed to delete worker results on.
+        worker_results_delete(
+            corpus_id=corpus_id,
+            version_id=version_id,
+            element_id=element_id,
+            include_children=False,
+        )
+
 
 @job('high', timeout=settings.RQ_TIMEOUTS['move_element'])
 def move_element(source: Element, destination: Element) -> None:
diff --git a/arkindex/documents/tests/tasks/test_worker_results_delete.py b/arkindex/documents/tests/tasks/test_worker_results_delete.py
index 99cc1bae9f19ac60429a612e19ab14b6a7417a15..4599191fc8727dc174d72f3cc2c87815f19bb954 100644
--- a/arkindex/documents/tests/tasks/test_worker_results_delete.py
+++ b/arkindex/documents/tests/tasks/test_worker_results_delete.py
@@ -89,7 +89,7 @@ class TestDeleteWorkerResults(FixtureTestCase):
         with self.assertExactQueries('worker_results_delete_under_parent.sql', params={
             'corpus_id': str(self.corpus.id),
             'version_id': str(self.version_1.id),
-            'parent_id': str(self.page1.id),
+            'element_id': str(self.page1.id),
         }):
             worker_results_delete(self.corpus.id, self.version_1.id, self.page1.id)
 
@@ -116,7 +116,7 @@ class TestDeleteWorkerResults(FixtureTestCase):
         with self.assertExactQueries('worker_results_delete_under_parent_included.sql', params={
             'corpus_id': str(self.corpus.id),
             'version_id': str(self.version_1.id),
-            'parent_id': str(self.page2.id),
+            'element_id': str(self.page2.id),
         }):
             worker_results_delete(self.corpus.id, self.version_1.id, self.page2.id)
 
diff --git a/arkindex/documents/tests/test_destroy_worker_results.py b/arkindex/documents/tests/test_destroy_worker_results.py
index ed5a60a2890af926363587b97a66f38d8bb9edfe..bf98302e78b3aa76825762ca16acfc1b16ecc987 100644
--- a/arkindex/documents/tests/test_destroy_worker_results.py
+++ b/arkindex/documents/tests/test_destroy_worker_results.py
@@ -60,7 +60,7 @@ class TestDestroyWorkerResults(FixtureAPITestCase):
         self.assertEqual(delay_mock.call_args, call(
             corpus_id=self.corpus.id,
             version_id=None,
-            parent_id=None,
+            element_id=None,
             user_id=self.user.id,
             description='Worker results deletion',
         ))
@@ -79,7 +79,7 @@ class TestDestroyWorkerResults(FixtureAPITestCase):
         self.assertEqual(delay_mock.call_args, call(
             corpus_id=self.corpus.id,
             version_id=self.version.id,
-            parent_id=None,
+            element_id=None,
             user_id=self.user.id,
             description=f"Deletion of results produced by worker version: {self.version}"
         ))
@@ -98,7 +98,7 @@ class TestDestroyWorkerResults(FixtureAPITestCase):
         self.assertEqual(delay_mock.call_args, call(
             corpus_id=self.corpus.id,
             version_id=None,
-            parent_id=self.page.id,
+            element_id=self.page.id,
             user_id=self.user.id,
             description='Worker results deletion',
         ))
@@ -117,7 +117,7 @@ class TestDestroyWorkerResults(FixtureAPITestCase):
         self.assertEqual(delay_mock.call_args, call(
             corpus_id=self.corpus.id,
             version_id=self.version.id,
-            parent_id=self.page.id,
+            element_id=self.page.id,
             user_id=self.user.id,
             description=f"Deletion of results produced by worker version: {self.version}"
         ))
diff --git a/arkindex/project/triggers.py b/arkindex/project/triggers.py
index da198d1511caecda4d0f6d9a7f6ffd4f0079005b..9ac334b77010068078ce77b44c0ba54a53d9d107 100644
--- a/arkindex/project/triggers.py
+++ b/arkindex/project/triggers.py
@@ -44,7 +44,7 @@ def element_trash(queryset: ElementQuerySet,
 
 def worker_results_delete(corpus_id: UUID,
                           version: Optional[WorkerVersion] = None,
-                          parent_id: Optional[UUID] = None,
+                          element_id: Optional[UUID] = None,
                           user_id: Optional[int] = None) -> None:
     """
     Delete all Worker Results produced by a specific WorkerVersion on a whole corpus or under
@@ -58,7 +58,7 @@ def worker_results_delete(corpus_id: UUID,
     documents_tasks.worker_results_delete.delay(
         corpus_id=corpus_id,
         version_id=version.id if version else None,
-        parent_id=parent_id,
+        element_id=element_id,
         user_id=user_id,
         description=description,
     )
diff --git a/arkindex/sql_validation/worker_results_delete_under_parent.sql b/arkindex/sql_validation/worker_results_delete_under_parent.sql
index fc9d65fa91feb36c15f9f0c4c1d2079c6afe3494..cc2860601ae2cc090ffde62f8f93b617873c3101 100644
--- a/arkindex/sql_validation/worker_results_delete_under_parent.sql
+++ b/arkindex/sql_validation/worker_results_delete_under_parent.sql
@@ -6,11 +6,10 @@ FROM
      inner join
          (SELECT "documents_element"."id"
           FROM "documents_element"
-          LEFT OUTER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
+          INNER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
           WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
                  AND "documents_element"."worker_version_id" = '{version_id}'::uuid
-                 AND ("documents_element"."id" = '{parent_id}'::uuid
-                      OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))) as input on (array[input.id] && p.path)) as lengths ;
+                 AND "documents_elementpath"."path" && (ARRAY['{element_id}'::uuid])::uuid[])) as input on (array[input.id] && p.path)) as lengths ;
 
 DELETE
 FROM "documents_transcriptionentity"
@@ -21,88 +20,80 @@ WHERE "documents_transcriptionentity"."id" IN
          WHERE V1."element_id" IN
                  (SELECT U0."id"
                   FROM "documents_element" U0
-                  LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+                  INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
                   WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                          AND U0."worker_version_id" = '{version_id}'::uuid
-                         AND (U0."id" = '{parent_id}'::uuid
-                              OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
+                         AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[])));
 
 DELETE
 FROM "documents_transcription"
 WHERE "documents_transcription"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 DELETE
 FROM "dataimport_workeractivity"
 WHERE "dataimport_workeractivity"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 DELETE
 FROM "documents_metadata"
 WHERE "documents_metadata"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 DELETE
 FROM "documents_classification"
 WHERE "documents_classification"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 DELETE
 FROM "documents_selection"
 WHERE "documents_selection"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 DELETE
 FROM "dataimport_dataimportelement"
 WHERE "dataimport_dataimportelement"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 UPDATE "dataimport_dataimport"
 SET "element_id" = NULL
 WHERE "dataimport_dataimport"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 WITH element_ids (id) AS
     (DELETE
@@ -110,22 +101,20 @@ WITH element_ids (id) AS
      WHERE element_id IN
              (SELECT "documents_element"."id"
               FROM "documents_element"
-              LEFT OUTER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
+              INNER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
               WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
                      AND "documents_element"."worker_version_id" = '{version_id}'::uuid
-                     AND ("documents_element"."id" = '{parent_id}'::uuid
-                          OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))) RETURNING element_id)
+                     AND "documents_elementpath"."path" && (ARRAY['{element_id}'::uuid])::uuid[])) RETURNING element_id)
 DELETE
 FROM documents_element element USING element_ids
 WHERE element.id = element_ids.id ;
 
 SELECT "documents_element"."id"
 FROM "documents_element"
-LEFT OUTER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
+INNER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
 WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
        AND "documents_element"."worker_version_id" = '{version_id}'::uuid
-       AND ("documents_element"."id" = '{parent_id}'::uuid
-            OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]));
+       AND "documents_elementpath"."path" && (ARRAY['{element_id}'::uuid])::uuid[]);
 
 DELETE
 FROM "documents_classification"
@@ -133,11 +122,10 @@ WHERE "documents_classification"."id" IN
         (SELECT U0."id"
          FROM "documents_classification" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
-         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         INNER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."element_id" = '{parent_id}'::uuid
-                     OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U4."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 DELETE
 FROM "documents_transcriptionentity"
@@ -146,11 +134,10 @@ WHERE "documents_transcriptionentity"."id" IN
          FROM "documents_transcriptionentity" U0
          INNER JOIN "documents_transcription" U1 ON (U0."transcription_id" = U1."id")
          INNER JOIN "documents_element" U2 ON (U1."element_id" = U2."id")
-         LEFT OUTER JOIN "documents_elementpath" U5 ON (U2."id" = U5."element_id")
+         INNER JOIN "documents_elementpath" U5 ON (U2."id" = U5."element_id")
          WHERE (U2."corpus_id" = '{corpus_id}'::uuid
                 AND U1."worker_version_id" = '{version_id}'::uuid
-                AND (U1."element_id" = '{parent_id}'::uuid
-                     OR U5."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U5."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 DELETE
 FROM "documents_transcriptionentity"
@@ -160,12 +147,11 @@ WHERE "documents_transcriptionentity"."id" IN
          INNER JOIN "documents_transcription" U1 ON (U0."transcription_id" = U1."id")
          INNER JOIN "documents_element" U2 ON (U1."element_id" = U2."id")
          INNER JOIN "documents_entity" U4 ON (U0."entity_id" = U4."id")
-         LEFT OUTER JOIN "documents_elementpath" U7 ON (U2."id" = U7."element_id")
+         INNER JOIN "documents_elementpath" U7 ON (U2."id" = U7."element_id")
          WHERE ((U2."corpus_id" = '{corpus_id}'::uuid
                  OR U4."corpus_id" = '{corpus_id}'::uuid)
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U1."element_id" = '{parent_id}'::uuid
-                     OR U7."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U7."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 DELETE
 FROM "documents_transcription"
@@ -173,11 +159,10 @@ WHERE "documents_transcription"."id" IN
         (SELECT U0."id"
          FROM "documents_transcription" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
-         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         INNER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."element_id" = '{parent_id}'::uuid
-                     OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U4."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 DELETE
 FROM "documents_metadata"
@@ -185,11 +170,10 @@ WHERE "documents_metadata"."id" IN
         (SELECT U0."id"
          FROM "documents_metadata" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
-         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         INNER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."element_id" = '{parent_id}'::uuid
-                     OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U4."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
 
 DELETE
 FROM "dataimport_workeractivity"
@@ -197,8 +181,178 @@ WHERE "dataimport_workeractivity"."id" IN
         (SELECT U0."id"
          FROM "dataimport_workeractivity" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
-         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         INNER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."element_id" = '{parent_id}'::uuid
-                     OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])))
+                AND U4."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+select min(length),
+       max(length)
+FROM
+    (select array_length(p.path, 1) as length
+     from documents_elementpath as p
+     inner join
+         (SELECT "documents_element"."id"
+          FROM "documents_element"
+          WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
+                 AND "documents_element"."worker_version_id" = '{version_id}'::uuid
+                 AND "documents_element"."id" = '{element_id}'::uuid)) as input on (array[input.id] && p.path)) as lengths ;
+
+DELETE
+FROM "documents_transcriptionentity"
+WHERE "documents_transcriptionentity"."id" IN
+        (SELECT V0."id"
+         FROM "documents_transcriptionentity" V0
+         INNER JOIN "documents_transcription" V1 ON (V0."transcription_id" = V1."id")
+         WHERE V1."element_id" IN
+                 (SELECT U0."id"
+                  FROM "documents_element" U0
+                  WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                         AND U0."worker_version_id" = '{version_id}'::uuid
+                         AND U0."id" = '{element_id}'::uuid)));
+
+DELETE
+FROM "documents_transcription"
+WHERE "documents_transcription"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U0."id" = '{element_id}'::uuid));
+
+DELETE
+FROM "dataimport_workeractivity"
+WHERE "dataimport_workeractivity"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U0."id" = '{element_id}'::uuid));
+
+DELETE
+FROM "documents_metadata"
+WHERE "documents_metadata"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U0."id" = '{element_id}'::uuid));
+
+DELETE
+FROM "documents_classification"
+WHERE "documents_classification"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U0."id" = '{element_id}'::uuid));
+
+DELETE
+FROM "documents_selection"
+WHERE "documents_selection"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U0."id" = '{element_id}'::uuid));
+
+DELETE
+FROM "dataimport_dataimportelement"
+WHERE "dataimport_dataimportelement"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U0."id" = '{element_id}'::uuid));
+
+UPDATE "dataimport_dataimport"
+SET "element_id" = NULL
+WHERE "dataimport_dataimport"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U0."id" = '{element_id}'::uuid));
+
+WITH element_ids (id) AS
+    (DELETE
+     FROM documents_elementpath
+     WHERE element_id IN
+             (SELECT "documents_element"."id"
+              FROM "documents_element"
+              WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
+                     AND "documents_element"."worker_version_id" = '{version_id}'::uuid
+                     AND "documents_element"."id" = '{element_id}'::uuid)) RETURNING element_id)
+DELETE
+FROM documents_element element USING element_ids
+WHERE element.id = element_ids.id ;
+
+SELECT "documents_element"."id"
+FROM "documents_element"
+WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
+       AND "documents_element"."worker_version_id" = '{version_id}'::uuid
+       AND "documents_element"."id" = '{element_id}'::uuid);
+
+DELETE
+FROM "documents_classification"
+WHERE "documents_classification"."id" IN
+        (SELECT U0."id"
+         FROM "documents_classification" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U0."element_id" = '{element_id}'::uuid));
+
+DELETE
+FROM "documents_transcriptionentity"
+WHERE "documents_transcriptionentity"."id" IN
+        (SELECT U0."id"
+         FROM "documents_transcriptionentity" U0
+         INNER JOIN "documents_transcription" U1 ON (U0."transcription_id" = U1."id")
+         INNER JOIN "documents_element" U2 ON (U1."element_id" = U2."id")
+         WHERE (U2."corpus_id" = '{corpus_id}'::uuid
+                AND U1."worker_version_id" = '{version_id}'::uuid
+                AND U1."element_id" = '{element_id}'::uuid));
+
+DELETE
+FROM "documents_transcriptionentity"
+WHERE "documents_transcriptionentity"."id" IN
+        (SELECT U0."id"
+         FROM "documents_transcriptionentity" U0
+         INNER JOIN "documents_transcription" U1 ON (U0."transcription_id" = U1."id")
+         INNER JOIN "documents_element" U2 ON (U1."element_id" = U2."id")
+         INNER JOIN "documents_entity" U4 ON (U0."entity_id" = U4."id")
+         WHERE ((U2."corpus_id" = '{corpus_id}'::uuid
+                 OR U4."corpus_id" = '{corpus_id}'::uuid)
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U1."element_id" = '{element_id}'::uuid));
+
+DELETE
+FROM "documents_transcription"
+WHERE "documents_transcription"."id" IN
+        (SELECT U0."id"
+         FROM "documents_transcription" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U0."element_id" = '{element_id}'::uuid));
+
+DELETE
+FROM "documents_metadata"
+WHERE "documents_metadata"."id" IN
+        (SELECT U0."id"
+         FROM "documents_metadata" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U0."element_id" = '{element_id}'::uuid));
+
+DELETE
+FROM "dataimport_workeractivity"
+WHERE "dataimport_workeractivity"."id" IN
+        (SELECT U0."id"
+         FROM "dataimport_workeractivity" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U0."element_id" = '{element_id}'::uuid))
diff --git a/arkindex/sql_validation/worker_results_delete_under_parent_included.sql b/arkindex/sql_validation/worker_results_delete_under_parent_included.sql
index 048de7a072f5694513e66e89dd13d418071bfb7a..88ed49ebc9c3972163afadc323359e1b3c53587a 100644
--- a/arkindex/sql_validation/worker_results_delete_under_parent_included.sql
+++ b/arkindex/sql_validation/worker_results_delete_under_parent_included.sql
@@ -6,11 +6,197 @@ FROM
      inner join
          (SELECT "documents_element"."id"
           FROM "documents_element"
-          LEFT OUTER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
+          INNER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
           WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
                  AND "documents_element"."worker_version_id" = '{version_id}'::uuid
-                 AND ("documents_element"."id" = '{parent_id}'::uuid
-                      OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))) as input on (array[input.id] && p.path)) as lengths ;
+                 AND "documents_elementpath"."path" && (ARRAY['{element_id}'::uuid])::uuid[])) as input on (array[input.id] && p.path)) as lengths ;
+
+DELETE
+FROM "documents_transcriptionentity"
+WHERE "documents_transcriptionentity"."id" IN
+        (SELECT V0."id"
+         FROM "documents_transcriptionentity" V0
+         INNER JOIN "documents_transcription" V1 ON (V0."transcription_id" = V1."id")
+         WHERE V1."element_id" IN
+                 (SELECT U0."id"
+                  FROM "documents_element" U0
+                  INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+                  WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                         AND U0."worker_version_id" = '{version_id}'::uuid
+                         AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[])));
+
+DELETE
+FROM "documents_transcription"
+WHERE "documents_transcription"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+DELETE
+FROM "dataimport_workeractivity"
+WHERE "dataimport_workeractivity"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+DELETE
+FROM "documents_metadata"
+WHERE "documents_metadata"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+DELETE
+FROM "documents_classification"
+WHERE "documents_classification"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+DELETE
+FROM "documents_selection"
+WHERE "documents_selection"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+DELETE
+FROM "dataimport_dataimportelement"
+WHERE "dataimport_dataimportelement"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+UPDATE "dataimport_dataimport"
+SET "element_id" = NULL
+WHERE "dataimport_dataimport"."element_id" IN
+        (SELECT U0."id"
+         FROM "documents_element" U0
+         INNER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
+         WHERE (U0."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U3."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+WITH element_ids (id) AS
+    (DELETE
+     FROM documents_elementpath
+     WHERE element_id IN
+             (SELECT "documents_element"."id"
+              FROM "documents_element"
+              INNER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
+              WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
+                     AND "documents_element"."worker_version_id" = '{version_id}'::uuid
+                     AND "documents_elementpath"."path" && (ARRAY['{element_id}'::uuid])::uuid[])) RETURNING element_id)
+DELETE
+FROM documents_element element USING element_ids
+WHERE element.id = element_ids.id ;
+
+SELECT "documents_element"."id"
+FROM "documents_element"
+INNER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
+WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
+       AND "documents_element"."worker_version_id" = '{version_id}'::uuid
+       AND "documents_elementpath"."path" && (ARRAY['{element_id}'::uuid])::uuid[]);
+
+DELETE
+FROM "documents_classification"
+WHERE "documents_classification"."id" IN
+        (SELECT U0."id"
+         FROM "documents_classification" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         INNER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U4."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+DELETE
+FROM "documents_transcriptionentity"
+WHERE "documents_transcriptionentity"."id" IN
+        (SELECT U0."id"
+         FROM "documents_transcriptionentity" U0
+         INNER JOIN "documents_transcription" U1 ON (U0."transcription_id" = U1."id")
+         INNER JOIN "documents_element" U2 ON (U1."element_id" = U2."id")
+         INNER JOIN "documents_elementpath" U5 ON (U2."id" = U5."element_id")
+         WHERE (U2."corpus_id" = '{corpus_id}'::uuid
+                AND U1."worker_version_id" = '{version_id}'::uuid
+                AND U5."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+DELETE
+FROM "documents_transcriptionentity"
+WHERE "documents_transcriptionentity"."id" IN
+        (SELECT U0."id"
+         FROM "documents_transcriptionentity" U0
+         INNER JOIN "documents_transcription" U1 ON (U0."transcription_id" = U1."id")
+         INNER JOIN "documents_element" U2 ON (U1."element_id" = U2."id")
+         INNER JOIN "documents_entity" U4 ON (U0."entity_id" = U4."id")
+         INNER JOIN "documents_elementpath" U7 ON (U2."id" = U7."element_id")
+         WHERE ((U2."corpus_id" = '{corpus_id}'::uuid
+                 OR U4."corpus_id" = '{corpus_id}'::uuid)
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U7."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+DELETE
+FROM "documents_transcription"
+WHERE "documents_transcription"."id" IN
+        (SELECT U0."id"
+         FROM "documents_transcription" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         INNER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U4."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+DELETE
+FROM "documents_metadata"
+WHERE "documents_metadata"."id" IN
+        (SELECT U0."id"
+         FROM "documents_metadata" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         INNER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U4."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+DELETE
+FROM "dataimport_workeractivity"
+WHERE "dataimport_workeractivity"."id" IN
+        (SELECT U0."id"
+         FROM "dataimport_workeractivity" U0
+         INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
+         INNER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
+         WHERE (U1."corpus_id" = '{corpus_id}'::uuid
+                AND U0."worker_version_id" = '{version_id}'::uuid
+                AND U4."path" && (ARRAY['{element_id}'::uuid])::uuid[]));
+
+select min(length),
+       max(length)
+FROM
+    (select array_length(p.path, 1) as length
+     from documents_elementpath as p
+     inner join
+         (SELECT "documents_element"."id"
+          FROM "documents_element"
+          WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
+                 AND "documents_element"."worker_version_id" = '{version_id}'::uuid
+                 AND "documents_element"."id" = '{element_id}'::uuid)) as input on (array[input.id] && p.path)) as lengths ;
 
 DELETE
 FROM "documents_transcriptionentity"
@@ -25,11 +211,9 @@ WHERE "documents_transcriptionentity"."id" IN
                   WHERE V1."path"[2] IN
                           (SELECT U0."id"
                            FROM "documents_element" U0
-                           LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
                            WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                                   AND U0."worker_version_id" = '{version_id}'::uuid
-                                  AND (U0."id" = '{parent_id}'::uuid
-                                       OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])))));
+                                  AND U0."id" = '{element_id}'::uuid))));
 
 DELETE
 FROM "documents_transcription"
@@ -40,11 +224,9 @@ WHERE "documents_transcription"."element_id" IN
          WHERE V1."path"[2] IN
                  (SELECT U0."id"
                   FROM "documents_element" U0
-                  LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
                   WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                          AND U0."worker_version_id" = '{version_id}'::uuid
-                         AND (U0."id" = '{parent_id}'::uuid
-                              OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
+                         AND U0."id" = '{element_id}'::uuid)));
 
 DELETE
 FROM "dataimport_workeractivity"
@@ -55,11 +237,9 @@ WHERE "dataimport_workeractivity"."element_id" IN
          WHERE V1."path"[2] IN
                  (SELECT U0."id"
                   FROM "documents_element" U0
-                  LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
                   WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                          AND U0."worker_version_id" = '{version_id}'::uuid
-                         AND (U0."id" = '{parent_id}'::uuid
-                              OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
+                         AND U0."id" = '{element_id}'::uuid)));
 
 DELETE
 FROM "documents_metadata"
@@ -70,11 +250,9 @@ WHERE "documents_metadata"."element_id" IN
          WHERE V1."path"[2] IN
                  (SELECT U0."id"
                   FROM "documents_element" U0
-                  LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
                   WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                          AND U0."worker_version_id" = '{version_id}'::uuid
-                         AND (U0."id" = '{parent_id}'::uuid
-                              OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
+                         AND U0."id" = '{element_id}'::uuid)));
 
 DELETE
 FROM "documents_classification"
@@ -85,11 +263,9 @@ WHERE "documents_classification"."element_id" IN
          WHERE V1."path"[2] IN
                  (SELECT U0."id"
                   FROM "documents_element" U0
-                  LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
                   WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                          AND U0."worker_version_id" = '{version_id}'::uuid
-                         AND (U0."id" = '{parent_id}'::uuid
-                              OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
+                         AND U0."id" = '{element_id}'::uuid)));
 
 DELETE
 FROM "documents_selection"
@@ -100,11 +276,9 @@ WHERE "documents_selection"."element_id" IN
          WHERE V1."path"[2] IN
                  (SELECT U0."id"
                   FROM "documents_element" U0
-                  LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
                   WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                          AND U0."worker_version_id" = '{version_id}'::uuid
-                         AND (U0."id" = '{parent_id}'::uuid
-                              OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
+                         AND U0."id" = '{element_id}'::uuid)));
 
 DELETE
 FROM "dataimport_dataimportelement"
@@ -115,11 +289,9 @@ WHERE "dataimport_dataimportelement"."element_id" IN
          WHERE V1."path"[2] IN
                  (SELECT U0."id"
                   FROM "documents_element" U0
-                  LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
                   WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                          AND U0."worker_version_id" = '{version_id}'::uuid
-                         AND (U0."id" = '{parent_id}'::uuid
-                              OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
+                         AND U0."id" = '{element_id}'::uuid)));
 
 UPDATE "dataimport_dataimport"
 SET "element_id" = NULL
@@ -130,11 +302,9 @@ WHERE "dataimport_dataimport"."element_id" IN
          WHERE V1."path"[2] IN
                  (SELECT U0."id"
                   FROM "documents_element" U0
-                  LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
                   WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                          AND U0."worker_version_id" = '{version_id}'::uuid
-                         AND (U0."id" = '{parent_id}'::uuid
-                              OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
+                         AND U0."id" = '{element_id}'::uuid)));
 
 WITH element_ids (id) AS
     (DELETE
@@ -146,11 +316,9 @@ WITH element_ids (id) AS
               WHERE "documents_elementpath"."path"[2] IN
                       (SELECT U0."id"
                        FROM "documents_element" U0
-                       LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
                        WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                               AND U0."worker_version_id" = '{version_id}'::uuid
-                              AND (U0."id" = '{parent_id}'::uuid
-                                   OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])))) RETURNING element_id)
+                              AND U0."id" = '{element_id}'::uuid))) RETURNING element_id)
 DELETE
 FROM documents_element element USING element_ids
 WHERE element.id = element_ids.id ;
@@ -161,11 +329,9 @@ INNER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_ele
 WHERE "documents_elementpath"."path"[2] IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U0."id" = '{element_id}'::uuid));
 
 DELETE
 FROM "documents_transcriptionentity"
@@ -176,88 +342,72 @@ WHERE "documents_transcriptionentity"."id" IN
          WHERE V1."element_id" IN
                  (SELECT U0."id"
                   FROM "documents_element" U0
-                  LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
                   WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                          AND U0."worker_version_id" = '{version_id}'::uuid
-                         AND (U0."id" = '{parent_id}'::uuid
-                              OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))));
+                         AND U0."id" = '{element_id}'::uuid)));
 
 DELETE
 FROM "documents_transcription"
 WHERE "documents_transcription"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U0."id" = '{element_id}'::uuid));
 
 DELETE
 FROM "dataimport_workeractivity"
 WHERE "dataimport_workeractivity"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U0."id" = '{element_id}'::uuid));
 
 DELETE
 FROM "documents_metadata"
 WHERE "documents_metadata"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U0."id" = '{element_id}'::uuid));
 
 DELETE
 FROM "documents_classification"
 WHERE "documents_classification"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U0."id" = '{element_id}'::uuid));
 
 DELETE
 FROM "documents_selection"
 WHERE "documents_selection"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U0."id" = '{element_id}'::uuid));
 
 DELETE
 FROM "dataimport_dataimportelement"
 WHERE "dataimport_dataimportelement"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U0."id" = '{element_id}'::uuid));
 
 UPDATE "dataimport_dataimport"
 SET "element_id" = NULL
 WHERE "dataimport_dataimport"."element_id" IN
         (SELECT U0."id"
          FROM "documents_element" U0
-         LEFT OUTER JOIN "documents_elementpath" U3 ON (U0."id" = U3."element_id")
          WHERE (U0."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."id" = '{parent_id}'::uuid
-                     OR U3."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U0."id" = '{element_id}'::uuid));
 
 WITH element_ids (id) AS
     (DELETE
@@ -265,22 +415,18 @@ WITH element_ids (id) AS
      WHERE element_id IN
              (SELECT "documents_element"."id"
               FROM "documents_element"
-              LEFT OUTER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
               WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
                      AND "documents_element"."worker_version_id" = '{version_id}'::uuid
-                     AND ("documents_element"."id" = '{parent_id}'::uuid
-                          OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]))) RETURNING element_id)
+                     AND "documents_element"."id" = '{element_id}'::uuid)) RETURNING element_id)
 DELETE
 FROM documents_element element USING element_ids
 WHERE element.id = element_ids.id ;
 
 SELECT "documents_element"."id"
 FROM "documents_element"
-LEFT OUTER JOIN "documents_elementpath" ON ("documents_element"."id" = "documents_elementpath"."element_id")
 WHERE ("documents_element"."corpus_id" = '{corpus_id}'::uuid
        AND "documents_element"."worker_version_id" = '{version_id}'::uuid
-       AND ("documents_element"."id" = '{parent_id}'::uuid
-            OR "documents_elementpath"."path" && (ARRAY['{parent_id}'::uuid])::uuid[]));
+       AND "documents_element"."id" = '{element_id}'::uuid);
 
 DELETE
 FROM "documents_classification"
@@ -288,11 +434,9 @@ WHERE "documents_classification"."id" IN
         (SELECT U0."id"
          FROM "documents_classification" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
-         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."element_id" = '{parent_id}'::uuid
-                     OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U0."element_id" = '{element_id}'::uuid));
 
 DELETE
 FROM "documents_transcriptionentity"
@@ -301,11 +445,9 @@ WHERE "documents_transcriptionentity"."id" IN
          FROM "documents_transcriptionentity" U0
          INNER JOIN "documents_transcription" U1 ON (U0."transcription_id" = U1."id")
          INNER JOIN "documents_element" U2 ON (U1."element_id" = U2."id")
-         LEFT OUTER JOIN "documents_elementpath" U5 ON (U2."id" = U5."element_id")
          WHERE (U2."corpus_id" = '{corpus_id}'::uuid
                 AND U1."worker_version_id" = '{version_id}'::uuid
-                AND (U1."element_id" = '{parent_id}'::uuid
-                     OR U5."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U1."element_id" = '{element_id}'::uuid));
 
 DELETE
 FROM "documents_transcriptionentity"
@@ -315,12 +457,10 @@ WHERE "documents_transcriptionentity"."id" IN
          INNER JOIN "documents_transcription" U1 ON (U0."transcription_id" = U1."id")
          INNER JOIN "documents_element" U2 ON (U1."element_id" = U2."id")
          INNER JOIN "documents_entity" U4 ON (U0."entity_id" = U4."id")
-         LEFT OUTER JOIN "documents_elementpath" U7 ON (U2."id" = U7."element_id")
          WHERE ((U2."corpus_id" = '{corpus_id}'::uuid
                  OR U4."corpus_id" = '{corpus_id}'::uuid)
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U1."element_id" = '{parent_id}'::uuid
-                     OR U7."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U1."element_id" = '{element_id}'::uuid));
 
 DELETE
 FROM "documents_transcription"
@@ -328,11 +468,9 @@ WHERE "documents_transcription"."id" IN
         (SELECT U0."id"
          FROM "documents_transcription" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
-         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."element_id" = '{parent_id}'::uuid
-                     OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U0."element_id" = '{element_id}'::uuid));
 
 DELETE
 FROM "documents_metadata"
@@ -340,11 +478,9 @@ WHERE "documents_metadata"."id" IN
         (SELECT U0."id"
          FROM "documents_metadata" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
-         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."element_id" = '{parent_id}'::uuid
-                     OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])));
+                AND U0."element_id" = '{element_id}'::uuid));
 
 DELETE
 FROM "dataimport_workeractivity"
@@ -352,8 +488,6 @@ WHERE "dataimport_workeractivity"."id" IN
         (SELECT U0."id"
          FROM "dataimport_workeractivity" U0
          INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id")
-         LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id")
          WHERE (U1."corpus_id" = '{corpus_id}'::uuid
                 AND U0."worker_version_id" = '{version_id}'::uuid
-                AND (U0."element_id" = '{parent_id}'::uuid
-                     OR U4."path" && (ARRAY['{parent_id}'::uuid])::uuid[])))
+                AND U0."element_id" = '{element_id}'::uuid))