BEGIN; BEGIN EXPLAIN (ANALYZE, BUFFERS) select supp_nation, cust_nation, l_year, sum(volume) as revenue from ( select n1.n_name as supp_nation, n2.n_name as cust_nation, extract(year from l_shipdate) as l_year, l_extendedprice * (1 - l_discount) as volume from supplier, lineitem, orders, customer, nation n1, nation n2 where s_suppkey = l_suppkey and o_orderkey = l_orderkey and c_custkey = o_custkey and s_nationkey = n1.n_nationkey and c_nationkey = n2.n_nationkey and ( (n1.n_name = 'GERMANY' and n2.n_name = 'ARGENTINA') or (n1.n_name = 'ARGENTINA' and n2.n_name = 'GERMANY') ) and l_shipdate between date '1995-01-01' and date '1996-12-31' ) as shipping group by supp_nation, cust_nation, l_year order by supp_nation, cust_nation, l_year; QUERY PLAN ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Sort (cost=2001949.16..2001956.87 rows=3085 width=64) (actual time=21883.477..21883.478 rows=4 loops=1) Sort Key: n1.n_name, n2.n_name, (date_part('year'::text, (lineitem.l_shipdate)::timestamp without time zone)) Sort Method: quicksort Memory: 25kB Buffers: shared hit=4799691 read=734516 written=4 -> HashAggregate (cost=2001724.09..2001770.36 rows=3085 width=64) (actual time=21883.392..21883.403 rows=4 loops=1) Group Key: n1.n_name, n2.n_name, date_part('year'::text, (lineitem.l_shipdate)::timestamp without time zone) Buffers: shared hit=4799683 read=734516 written=4 -> Hash Join (cost=62340.37..2000806.27 rows=61188 width=64) (actual time=953.077..21800.579 rows=58667 loops=1) Hash Cond: (lineitem.l_suppkey = supplier.s_suppkey) Join Filter: (((n1.n_name = 'GERMANY'::bpchar) AND (n2.n_name = 'ARGENTINA'::bpchar)) OR ((n1.n_name = 'ARGENTINA'::bpchar) AND (n2.n_name = 'GERMANY'::bpchar))) Rows Removed by Join Filter: 58954 Buffers: shared hit=4799683 read=734516 written=4 -> Nested Loop (cost=58604.97..1988898.77 rows=1470308 width=42) (actual time=892.528..20903.743 rows=1462648 loops=1) Buffers: shared hit=4799622 read=732394 written=4 -> Hash Join (cost=58604.40..531536.45 rows=1203596 width=30) (actual time=892.455..11519.305 rows=1200690 loops=1) Hash Cond: (orders.o_custkey = customer.c_custkey) Buffers: shared hit=65 read=289242 written=4 -> Seq Scan on orders (cost=0.00..404477.52 rows=15044952 width=8) (actual time=0.009..3935.654 rows=15000000 loops=1) Buffers: shared hit=13 read=254015 -> Hash (cost=57104.40..57104.40 rows=120000 width=30) (actual time=891.784..891.784 rows=119994 loops=1) Buckets: 131072 Batches: 1 Memory Usage: 8290kB Buffers: shared hit=52 read=35227 written=4 -> Hash Join (cost=1.40..57104.40 rows=120000 width=30) (actual time=0.055..843.947 rows=119994 loops=1) Hash Cond: (customer.c_nationkey = n2.n_nationkey) Buffers: shared hit=52 read=35227 written=4 -> Seq Scan on customer (cost=0.00..50278.00 rows=1500000 width=8) (actual time=0.013..622.815 rows=1500000 loops=1) Buffers: shared hit=51 read=35227 written=4 -> Hash (cost=1.38..1.38 rows=2 width=30) (actual time=0.028..0.028 rows=2 loops=1) Buckets: 1024 Batches: 1 Memory Usage: 9kB Buffers: shared hit=1 -> Seq Scan on nation n2 (cost=0.00..1.38 rows=2 width=30) (actual time=0.015..0.021 rows=2 loops=1) Filter: ((n_name = 'ARGENTINA'::bpchar) OR (n_name = 'GERMANY'::bpchar)) Rows Removed by Filter: 23 Buffers: shared hit=1 -> Index Scan using lineitem_l_orderkey_l_linenumber_l_shipdate_idx on lineitem (cost=0.56..1.16 rows=5 width=20) (actual time=0.007..0.007 rows=1 loops=1200690) Index Cond: ((l_orderkey = orders.o_orderkey) AND (l_shipdate >= '1995-01-01'::date) AND (l_shipdate <= '1996-12-31'::date)) Buffers: shared hit=4799557 read=443152 -> Hash (cost=3635.40..3635.40 rows=8000 width=30) (actual time=60.465..60.465 rows=8056 loops=1) Buckets: 8192 Batches: 1 Memory Usage: 552kB Buffers: shared hit=58 read=2122 -> Hash Join (cost=1.40..3635.40 rows=8000 width=30) (actual time=0.037..58.232 rows=8056 loops=1) Hash Cond: (supplier.s_nationkey = n1.n_nationkey) Buffers: shared hit=58 read=2122 -> Seq Scan on supplier (cost=0.00..3179.00 rows=100000 width=8) (actual time=0.004..43.363 rows=100000 loops=1) Buffers: shared hit=57 read=2122 -> Hash (cost=1.38..1.38 rows=2 width=30) (actual time=0.019..0.019 rows=2 loops=1) Buckets: 1024 Batches: 1 Memory Usage: 9kB Buffers: shared hit=1 -> Seq Scan on nation n1 (cost=0.00..1.38 rows=2 width=30) (actual time=0.008..0.013 rows=2 loops=1) Filter: ((n_name = 'GERMANY'::bpchar) OR (n_name = 'ARGENTINA'::bpchar)) Rows Removed by Filter: 23 Buffers: shared hit=1 Planning time: 5.628 ms Execution time: 21883.994 ms (54 rows) COMMIT; COMMIT