Estimate Actual Operator 5 5 SORT o_orderpriority
5 5 PROJECT CONVERT_IMPLICIT(int,Expr1013,0) AS Expr1006
5 5 GROUPBYHASHAGGREGATECOUNT(*) AS Expr1013
42114 47831 INNERJOINHASHON l_orderkey = o_orderkey
53073 52204 │└TABLESEEK orders WHERE o_orderdate >= '1995-02-01' AND o_orderdate < '1995-05-01'
599882 208432 TABLESEEK lineitem WHERE (BLOOM(l_orderkey)) AND (l_commitdate < l_receiptdate)
Commentary
## EXIST decorrelation into SEMI JOIN
This expression shoudl be decorrelated:
EXISTS (SELECT *
FROM tpch.lineitem
WHERE l_orderkey = o_orderkey
AND l_commitdate < l_receiptdate)
Optimizers will generally convert this into a SEMI JOIN.
Flipping the inner and outer side of the join (for optimisers that know how to do this) will greatly reduce the amount of memory consumed and it opens up additional opportunities for bloom filtering.