explain.depesz.com

PostgreSQL's explain analyze made readable

Result: qvEd

Settings
# exclusive inclusive rows x rows loops node
1. 0.000 0.000 ↓ 0.0

Limit (cost=2,977,310.84..2,989,101.88 rows=119 width=298) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=2,977,310.84..2,989,101.88 rows=119 width=298) (actual rows= loops=)

  • Group Key: da.affiliate_name
  • Group Key: ()
3. 0.000 0.000 ↓ 0.0

Sort (cost=2,977,310.84..2,978,096.52 rows=314,269 width=234) (actual rows= loops=)

  • Sort Key: da.affiliate_name
4. 0.000 0.000 ↓ 0.0

Gather (cost=166,337.92..2,877,719.51 rows=314,269 width=234) (actual rows= loops=)

  • Workers Planned: 2
5. 0.000 0.000 ↓ 0.0

Hash Join (cost=165,337.92..2,845,292.61 rows=130,945 width=234) (actual rows= loops=)

  • Hash Cond: (lf.person_id = dps.person_id)
6. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,792.50..2,628,647.43 rows=452,263 width=234) (actual rows= loops=)

  • Hash Cond: (dim_distribution_2019_05_01.bid_id = dbid.bid_key)
7. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,766.74..2,627,425.61 rows=452,263 width=242) (actual rows= loops=)

  • Hash Cond: (lf.offer_id = dof.offer_id)
8. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,750.09..2,626,205.49 rows=452,263 width=246) (actual rows= loops=)

  • Hash Cond: (lf.affiliate_id = da.affiliate_id)
9. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,746.14..2,624,971.70 rows=452,263 width=32) (actual rows= loops=)

  • Hash Cond: (dim_distribution_2019_05_01.buyer_id = db.buyer_id)
10. 0.000 0.000 ↓ 0.0

Nested Loop (cost=4.41..2,622,042.47 rows=452,310 width=36) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Hash Join (cost=3.84..1,710,200.13 rows=570,042 width=21) (actual rows= loops=)

  • Hash Cond: (dim_distribution_2019_05_01.campaign_id = dc.campaign_id)
12. 0.000 0.000 ↓ 0.0

Append (cost=0.57..1,682,413.78 rows=10,364,401 width=25) (actual rows= loops=)

13. 0.000 0.000 ↓ 0.0

Parallel Index Scan using production_dim_distribution_2019_05_01_post_timestamp_index on dim_distribution_2019_05_01 (cost=0.57..864,913.01 rows=1,941,169 width=25) (actual rows= loops=)

  • Index Cond: ((post_timestamp >= '2019-08-08 00:00:00'::timestamp without time zone) AND (post_timestamp <= '2019-09-08 23:59:00'::timestamp without time zone))
  • Filter: (NOT is_ping)
14. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on dim_distribution_2019_08_15 (cost=0.00..817,500.77 rows=8,423,232 width=25) (actual rows= loops=)

  • Filter: ((NOT is_ping) AND (post_timestamp >= '2019-08-08 00:00:00'::timestamp without time zone) AND (post_timestamp <= '2019-09-08 23:59:00'::timestamp without time zone))
15. 0.000 0.000 ↓ 0.0

Hash (cost=3.14..3.14 rows=11 width=4) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Seq Scan on dim_campaign dc (cost=0.00..3.14 rows=11 width=4) (actual rows= loops=)

  • Filter: (campaign_label ~~ '%%%'::text)
17. 0.000 0.000 ↓ 0.0

Index Scan using lead_facts_pk on lead_facts lf (cost=0.56..1.60 rows=1 width=35) (actual rows= loops=)

  • Index Cond: (id = dim_distribution_2019_05_01.lead_id)
  • Filter: (vertical_id = ANY ('{1,2,32,41,48,49,50,57,59,6}'::integer[]))
18. 0.000 0.000 ↓ 0.0

Hash (cost=1,380.39..1,380.39 rows=28,908 width=4) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Seq Scan on dim_buyer db (cost=0.00..1,380.39 rows=28,908 width=4) (actual rows= loops=)

  • Filter: ((buyer_name)::text ~~ '%%%'::text)
20. 0.000 0.000 ↓ 0.0

Hash (cost=2.48..2.48 rows=118 width=222) (actual rows= loops=)

21. 0.000 0.000 ↓ 0.0

Seq Scan on dim_affiliate da (cost=0.00..2.48 rows=118 width=222) (actual rows= loops=)

  • Filter: ((affiliate_name)::text ~~ '%%%'::text)
22. 0.000 0.000 ↓ 0.0

Hash (cost=12.78..12.78 rows=309 width=4) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Index Only Scan using dim_offers_pk on dim_offers dof (cost=0.15..12.78 rows=309 width=4) (actual rows= loops=)

24. 0.000 0.000 ↓ 0.0

Hash (cost=18.67..18.67 rows=567 width=8) (actual rows= loops=)

25. 0.000 0.000 ↓ 0.0

Seq Scan on dim_bid dbid (cost=0.00..18.67 rows=567 width=8) (actual rows= loops=)

26. 0.000 0.000 ↓ 0.0

Hash (cost=85,079.41..85,079.41 rows=4,782,641 width=8) (actual rows= loops=)

27. 0.000 0.000 ↓ 0.0

Seq Scan on dim_person dps (cost=0.00..85,079.41 rows=4,782,641 width=8) (actual rows= loops=)