BEGIN; BEGIN EXPLAIN (ANALYZE, BUFFERS) select 100.00 * sum(case when p_type like 'PROMO%' then l_extendedprice * (1 - l_discount) else 0 end) / sum(l_extendedprice * (1 - l_discount)) as promo_revenue from lineitem, part where l_partkey = p_partkey and l_shipdate >= date '1996-04-01' and l_shipdate < cast(date '1996-04-01' + interval '1 month' as date); QUERY PLAN ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Aggregate (cost=1162572.88..1162572.89 rows=1 width=29) (actual time=9277.557..9277.558 rows=1 loops=1) Buffers: shared hit=181005 read=268242 dirtied=172 written=4596 -> Hash Join (cost=101581.49..1149298.62 rows=758529 width=29) (actual time=2613.080..8889.120 rows=747550 loops=1) Hash Cond: (lineitem.l_partkey = part.p_partkey) Buffers: shared hit=181005 read=268242 dirtied=172 written=4596 -> Bitmap Heap Scan on lineitem (cost=16059.49..1052398.69 rows=758529 width=12) (actual time=651.799..5639.206 rows=747550 loops=1) Recheck Cond: ((l_shipdate >= '1996-04-01'::date) AND (l_shipdate < '1996-05-01'::date)) Heap Blocks: exact=406676 Buffers: shared hit=180995 read=227727 dirtied=172 written=1670 -> Bitmap Index Scan on lineitem_l_shipdate_l_suppkey__idx (cost=0.00..15869.86 rows=758529 width=0) (actual time=426.673..426.673 rows=751034 loops=1) Index Cond: ((l_shipdate >= '1996-04-01'::date) AND (l_shipdate < '1996-05-01'::date)) Buffers: shared hit=162 read=1884 written=132 -> Hash (cost=60522.00..60522.00 rows=2000000 width=25) (actual time=1948.754..1948.754 rows=2000000 loops=1) Buckets: 2097152 Batches: 1 Memory Usage: 131903kB Buffers: shared hit=7 read=40515 written=2926 -> Seq Scan on part (cost=0.00..60522.00 rows=2000000 width=25) (actual time=0.016..1151.866 rows=2000000 loops=1) Buffers: shared hit=7 read=40515 written=2926 Planning time: 3.655 ms Execution time: 9283.177 ms (19 rows) COMMIT; COMMIT