BEGIN; BEGIN EXPLAIN (ANALYZE, BUFFERS) select p_brand, p_type, p_size, count(distinct ps_suppkey) as supplier_cnt from partsupp, part where p_partkey = ps_partkey and p_brand <> 'Brand#12' and p_type not like 'LARGE PLATED%' and p_size in (29, 3, 13, 17, 11, 4, 26, 30) and ps_suppkey not in ( select s_suppkey from supplier where s_comment like '%Customer%Complaints%' ) group by p_brand, p_type, p_size order by supplier_cnt desc, p_brand, p_type, p_size; QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ Sort (cost=456275.53..456344.89 rows=27744 width=40) (actual time=47367.373..47371.180 rows=27839 loops=1) Sort Key: (count(DISTINCT partsupp.ps_suppkey)), part.p_brand, part.p_type, part.p_size Sort Method: quicksort Memory: 2967kB Buffers: shared hit=149305 read=63140 written=15 -> GroupAggregate (cost=446552.30..454228.04 rows=27744 width=40) (actual time=45969.635..47008.783 rows=27839 loops=1) Buffers: shared hit=149289 read=63140 written=15 -> Sort (cost=446552.30..448031.96 rows=591864 width=40) (actual time=45969.534..46285.488 rows=1188137 loops=1) Sort Key: part.p_brand, part.p_type, part.p_size Sort Method: quicksort Memory: 141976kB Buffers: shared hit=149289 read=63140 written=15 -> Hash Join (cost=57930.97..389807.61 rows=591864 width=40) (actual time=1390.827..13861.741 rows=1188137 loops=1) Hash Cond: (partsupp.ps_partkey = part.p_partkey) Buffers: shared hit=149289 read=63140 written=15 -> Seq Scan on partsupp (cost=8.48..270966.48 rows=4000000 width=8) (actual time=1.403..6222.305 rows=7995520 loops=1) Filter: (NOT (hashed SubPlan 1)) Rows Removed by Filter: 4480 Buffers: shared hit=108766 read=62249 written=15 SubPlan 1 -> Index Scan using supplier_s_suppkey_idx_like on supplier (cost=0.00..8.45 rows=10 width=4) (actual time=0.111..1.280 rows=56 loops=1) Buffers: shared hit=55 read=2 -> Hash (cost=54223.34..54223.34 rows=295932 width=40) (actual time=1389.172..1389.172 rows=297200 loops=1) Buckets: 32768 Batches: 1 Memory Usage: 21536kB Buffers: shared hit=40523 read=891 -> Bitmap Heap Scan on part (cost=5728.17..54223.34 rows=295932 width=40) (actual time=168.475..1173.618 rows=297200 loops=1) Recheck Cond: (p_size = ANY ('{29,3,13,17,11,4,26,30}'::integer[])) Filter: ((p_brand <> 'Brand#12'::bpchar) AND ((p_type)::text !~~ 'LARGE PLATED%'::text)) Rows Removed by Filter: 22797 Buffers: shared hit=40523 read=891 -> Bitmap Index Scan on part_p_size_idx (cost=0.00..5654.19 rows=318927 width=0) (actual time=148.417..148.417 rows=319997 loops=1) Index Cond: (p_size = ANY ('{29,3,13,17,11,4,26,30}'::integer[])) Buffers: shared hit=9 read=891 Total runtime: 47391.519 ms (32 rows) COMMIT; COMMIT