EXPLAIN select c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice, sum(l_quantity) from customer, orders, lineitem where o_orderkey in ( select l_orderkey from lineitem group by l_orderkey having sum(l_quantity) > 315 ) and c_custkey = o_custkey and o_orderkey = l_orderkey group by c_name, c_custkey, o_orderkey, o_orderdate, o_totalprice order by o_totalprice desc, o_orderdate LIMIT 100; QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------- Limit (cost=13539343.09..13539345.84 rows=100 width=39) -> GroupAggregate (cost=13539343.09..14365005.62 rows=30024092 width=39) Group Key: orders.o_totalprice, orders.o_orderdate, customer.c_name, customer.c_custkey, orders.o_orderkey -> Sort (cost=13539343.09..13614403.32 rows=30024092 width=39) Sort Key: orders.o_totalprice, orders.o_orderdate, customer.c_name, customer.c_custkey, orders.o_orderkey -> Hash Join (cost=4101864.26..7347486.32 rows=30024092 width=39) Hash Cond: (lineitem.l_orderkey = orders.o_orderkey) -> Seq Scan on lineitem (cost=0.00..1666998.84 rows=60048184 width=8) -> Hash (cost=3949369.52..3949369.52 rows=7507419 width=39) -> Hash Join (cost=77827.63..3949369.52 rows=7507419 width=39) Hash Cond: (orders.o_custkey = customer.c_custkey) -> Merge Semi Join (cost=1.00..3624626.51 rows=7507419 width=20) Merge Cond: (orders.o_orderkey = lineitem_1.l_orderkey) -> Index Scan using orders_pkey on orders (cost=0.43..643605.01 rows=15014838 width=16) -> Materialize (cost=0.56..2937879.02 rows=448431 width=4) -> GroupAggregate (cost=0.56..2932273.63 rows=448431 width=8) Group Key: lineitem_1.l_orderkey Filter: (sum(lineitem_1.l_quantity) > 315::double precision) -> Index Scan using i_l_orderkey on lineitem lineitem_1 (cost=0.56..2626427.32 rows=60048184 width=8) -> Hash (cost=50285.17..50285.17 rows=1500117 width=23) -> Seq Scan on customer (cost=0.00..50285.17 rows=1500117 width=23) (21 rows)