explain.depesz.com

PostgreSQL's explain analyze made readable

Result: nZZK : hh

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

Gather Motion 40:1 (slice18; segments: 40) (cost=1,318,468.16..2,209,144.44 rows=20 width=29) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,318,468.16..2,209,144.44 rows=1 width=29) (actual rows= loops=)

  • Hash Cond: pla.po_header_id = pha.po_header_id
3. 0.000 0.000 ↓ 0.0

Redistribute Motion 40:40 (slice17; segments: 40) (cost=1,261,765.99..1,322,738.40 rows=1 width=37) (actual rows= loops=)

  • Hash Key: pla.po_header_id
4. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,261,765.99..1,322,738.01 rows=1 width=37) (actual rows= loops=)

  • Hash Cond: pll.po_line_id = pla.po_line_id
5. 0.000 0.000 ↓ 0.0

Redistribute Motion 40:40 (slice16; segments: 40) (cost=1,189,504.22..1,250,475.95 rows=1 width=37) (actual rows= loops=)

  • Hash Key: pll.po_line_id
6. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,189,504.22..1,250,475.57 rows=1 width=37) (actual rows= loops=)

  • Hash Cond: pda.line_location_id = pll.line_location_id
7. 0.000 0.000 ↓ 0.0

Redistribute Motion 40:40 (slice15; segments: 40) (cost=1,113,381.67..1,174,352.73 rows=1 width=37) (actual rows= loops=)

  • Hash Key: pda.line_location_id
8. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,113,381.67..1,174,352.35 rows=1 width=37) (actual rows= loops=)

  • Hash Cond: hom.name::text = sv.segment_value_lookup::text
9. 0.000 0.000 ↓ 0.0

Redistribute Motion 40:40 (slice13; segments: 40) (cost=1,113,193.85..1,174,164.28 rows=1 width=53) (actual rows= loops=)

  • Hash Key: hom.name::text
10. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,113,193.85..1,174,163.90 rows=1 width=53) (actual rows= loops=)

  • Hash Cond: aia.invoice_id::text = pc.system_reference2::text AND aia.invoice_id = aid.invoice_id
11. 0.000 0.000 ↓ 0.0

Append-only Scan on ap_invoices_all aia (cost=0.00..46,364.57 rows=73,027 width=8) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Hash (cost=1,113,182.35..1,113,182.35 rows=20 width=68) (actual rows= loops=)

13. 0.000 0.000 ↓ 0.0

Broadcast Motion 40:40 (slice12; segments: 40) (cost=1,052,894.99..1,113,182.35 rows=20 width=68) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,052,894.99..1,113,174.49 rows=1 width=68) (actual rows= loops=)

  • Hash Cond: pda.po_distribution_id = aid.po_distribution_id
15. 0.000 0.000 ↓ 0.0

Seq Scan on po_distributions_all pda (cost=0.00..53,886.44 rows=63,929 width=16) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Hash (cost=1,052,894.75..1,052,894.75 rows=1 width=68) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Redistribute Motion 40:40 (slice11; segments: 40) (cost=815,348.51..1,052,894.75 rows=1 width=68) (actual rows= loops=)

  • Hash Key: aid.po_distribution_id
18. 0.000 0.000 ↓ 0.0

Hash Join (cost=815,348.51..1,052,894.36 rows=1 width=68) (actual rows= loops=)

  • Hash Cond: ppa.carrying_out_organization_id = hom.organization_id
19. 0.000 0.000 ↓ 0.0

Redistribute Motion 40:40 (slice10; segments: 40) (cost=815,303.02..1,052,848.59 rows=1 width=59) (actual rows= loops=)

  • Hash Key: ppa.carrying_out_organization_id
20. 0.000 0.000 ↓ 0.0

Hash Join (cost=815,303.02..1,052,848.20 rows=1 width=59) (actual rows= loops=)

  • Hash Cond: aid.distribution_line_number::text = pc.system_reference3::text AND aid.invoice_id::text = pc.system_reference2::text
21. 0.000 0.000 ↓ 0.0

Append-only Scan on ap_invoice_distributions_all aid (cost=0.00..177,800.87 rows=298,720 width=23) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Hash (cost=815,291.53..815,291.53 rows=20 width=45) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Broadcast Motion 40:40 (slice9; segments: 40) (cost=649,684.54..815,291.53 rows=20 width=45) (actual rows= loops=)

24. 0.000 0.000 ↓ 0.0

Hash Join (cost=649,684.54..815,283.67 rows=1 width=45) (actual rows= loops=)

  • Hash Cond: pc.expenditure_item_id = pei.expenditure_item_id
25. 0.000 0.000 ↓ 0.0

Append-only Scan on pa_cost_distribution_lines_all pc (cost=0.00..139,804.02 rows=257,931 width=17) (actual rows= loops=)

26. 0.000 0.000 ↓ 0.0

Hash (cost=649,674.96..649,674.96 rows=20 width=44) (actual rows= loops=)

27. 0.000 0.000 ↓ 0.0

Broadcast Motion 40:40 (slice8; segments: 40) (cost=611,091.34..649,674.96 rows=20 width=44) (actual rows= loops=)

28. 0.000 0.000 ↓ 0.0

Hash Join (cost=611,091.34..649,667.10 rows=1 width=44) (actual rows= loops=)

  • Hash Cond: x.expenditure_id = pei.expenditure_id
29. 0.000 0.000 ↓ 0.0

Seq Scan on pa_expenditures_all x (cost=0.00..33,355.82 rows=52,198 width=8) (actual rows= loops=)

30. 0.000 0.000 ↓ 0.0

Hash (cost=611,091.10..611,091.10 rows=1 width=52) (actual rows= loops=)

31. 0.000 0.000 ↓ 0.0

Redistribute Motion 40:40 (slice7; segments: 40) (cost=389,077.41..611,091.10 rows=1 width=52) (actual rows= loops=)

  • Hash Key: pei.expenditure_id
32. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=389,077.41..611,090.72 rows=1 width=52) (actual rows= loops=)

  • Hash Cond: pei.expenditure_item_id = ec.expenditure_item_id