Subqueries are identified with numbers, in the order of their leading opened parenthesis “(“.
This example has two subqueries, one in the select list:
select (select c11 from t1 where c12 = t3.c32), c31 from t3 where c32 > (select c22 from t2 where c21 = t3.c31)
In the abstract plan, the subquery containing t1 is named “1” and the subquery containing t2 is named “2”. Both subquery 1 and 2 are nested over the scan of t3:
( nested ( nested ( t_scan t3 ) ( subq 1 ( i_scan i_c11_c12 ( table t1 (in ( subq 1 ) ) ) ) ) ) ( subq 2 ( i_scan i_c21 ( table t2 ( in ( subq 2 ) ) ) ) ) )
In this query, the second subquery is nested in the first:
select * from t3 where c32 > all (select c11 from t1 where c12 > all (select c22 from t2 where c21 = t3.c31))
In this case, the subquery containing t1 is also named “1” and the subquery containing t2 is named “2”. In this plan, subquery 2 is nested over the scan of t1, which is performed in subquery 1; subquery 1 is nested over the scan of t3 in the main query:
( nested ( t_scan t3 ) ( subq 1 ( nested ( i_scan i_c11_c12 ( table t1 ( in ( subq 1 ) ) ) ) ( subq 2 ( i_scan i_c21 ( table t2 ( in ( subq 2 ) ) ) ) ) ) )