BEGIN; BEGIN EXPLAIN (ANALYZE, BUFFERS) select cntrycode, count(*) as numcust, sum(c_acctbal) as totacctbal from ( select substr(c_phone, 1, 2) as cntrycode, c_acctbal from customer where substr(c_phone, 1, 2) in ('33', '16', '18', '19', '28', '10', '30') and c_acctbal > ( select avg(c_acctbal) from customer where c_acctbal > 0.00 and substr(c_phone, 1, 2) in ('33', '16', '18', '19', '28', '10', '30') ) and not exists ( select * from orders where o_custkey = c_custkey ) ) as vip group by cntrycode order by cntrycode; QUERY PLAN ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- Sort (cost=697791.41..697791.41 rows=3 width=20) (actual time=20924.890..20924.891 rows=7 loops=1) Sort Key: (substr((public.customer.c_phone)::text, 1, 2)) Sort Method: quicksort Memory: 25kB Buffers: shared hit=171323 read=157292 written=108 InitPlan 1 (returns $0) -> Aggregate (cost=52967.00..52967.01 rows=1 width=4) (actual time=1641.576..1641.576 rows=1 loops=1) Buffers: shared hit=10 read=36336 written=74 -> Bitmap Heap Scan on customer (cost=6678.09..52009.53 rows=382988 width=4) (actual time=197.744..1512.790 rows=382477 loops=1) Recheck Cond: ((substr((c_phone)::text, 1, 2) = ANY ('{33,16,18,19,28,10,30}'::text[])) AND (c_acctbal > 0::double precision)) Buffers: shared hit=10 read=36336 written=74 -> Bitmap Index Scan on customer_c_phone_idx_c_acctbal (cost=0.00..6582.34 rows=382988 width=0) (actual time=180.958..180.958 rows=382477 loops=1) Index Cond: (substr((c_phone)::text, 1, 2) = ANY ('{33,16,18,19,28,10,30}'::text[])) Buffers: shared hit=8 read=1060 written=4 -> HashAggregate (cost=644824.33..644824.38 rows=3 width=20) (actual time=20924.808..20924.812 rows=7 loops=1) Buffers: shared hit=171321 read=157292 written=108 -> Hash Anti Join (cost=601385.80..644383.21 rows=58816 width=20) (actual time=19921.046..20879.090 rows=63912 loops=1) Hash Cond: (public.customer.c_custkey = orders.o_custkey) Buffers: shared hit=171321 read=157292 written=108 -> Bitmap Heap Scan on customer (cost=2940.30..41902.01 rows=140332 width=24) (actual time=1755.687..2331.363 rows=191026 loops=1) Recheck Cond: ((substr((c_phone)::text, 1, 2) = ANY ('{33,16,18,19,28,10,30}'::text[])) AND (c_acctbal > $0)) Buffers: shared hit=35176 read=36874 written=74 -> Bitmap Index Scan on customer_c_phone_idx (cost=0.00..2905.22 rows=140332 width=0) (actual time=1741.553..1741.553 rows=191026 loops=1) Index Cond: ((substr((c_phone)::text, 1, 2) = ANY ('{33,16,18,19,28,10,30}'::text[])) AND (c_acctbal > $0)) Buffers: shared hit=19 read=36874 written=74 -> Hash (cost=408509.11..408509.11 rows=15194911 width=4) (actual time=18138.231..18138.231 rows=15015000 loops=1) Buckets: 2097152 Batches: 1 Memory Usage: 527872kB Buffers: shared hit=136142 read=120418 written=34 -> Seq Scan on orders (cost=0.00..408509.11 rows=15194911 width=4) (actual time=0.048..9922.093 rows=15015000 loops=1) Buffers: shared hit=136142 read=120418 written=34 Total runtime: 21057.938 ms (30 rows) COMMIT; COMMIT