explain.depesz.com

PostgreSQL's explain analyze made readable

Result: S5Rv

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

Aggregate (cost=127,649,023.14..127,649,023.23 rows=1 width=50) (actual rows= loops=)

  • Output: sum(pbs.bilanzsumme), sum(mp.liefermenge), sum(ba.tatsaechliche_liefermenge), (((sum(ba.tatsaechliche_liefermenge))::numeric / sum(pbs.bilanzsumme)) / '1000'::numeric), sum(bkm.aussendemenge), (1 - (sum(bkm.aussendemenge) / sum(ba.tatsaechliche_l (...)
2.          

CTE partnerbank

3. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=401.81..950.58 rows=2,401 width=2,121) (actual rows= loops=)

  • Output: vp.partnerkennung, vertriebskanal_zuordnung.obg, vp.id, vp.name, gg.kennung, gg.name, mg.id, mg.name, r.id, pb_1.bilanzsumme_id, r.name
  • Hash Cond: (pb_1.marktgebiet_id = mg.id)
4. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=395.91..911.67 rows=2,401 width=53) (actual rows= loops=)

  • Output: vertriebskanal_zuordnung.obg, vp.partnerkennung, vp.id, vp.name, pb_1.bilanzsumme_id, pb_1.marktgebiet_id
  • Hash Cond: (vp.id = pb_1.vertragspartner_id)
5. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=308.58..806.14 rows=2,401 width=45) (actual rows= loops=)

  • Output: vertriebskanal_zuordnung.obg, vp.partnerkennung, vp.id, vp.name
  • Hash Cond: (vertriebskanal_zuordnung.vertragspartner_id = vp.id)
6. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on stammdaten.vertriebskanal_zuordnung (cost=85.49..550.04 rows=2,401 width=8) (actual rows= loops=)

  • Output: vertriebskanal_zuordnung.id, vertriebskanal_zuordnung.vertragspartner_id, vertriebskanal_zuordnung.obg, vertriebskanal_zuordnung.gueltig_ab, vertriebskanal_zuordnung.gueltig_bis, vertriebskanal_zuordnung.agenturnummer, v (...)
  • Recheck Cond: (vertriebskanal_zuordnung.vertriebsstelle_id IS NULL)
  • Filter: ((vertriebskanal_zuordnung.vertriebskanal = 0) AND (vertriebskanal_zuordnung.gueltig_ab <= ('now'::cstring)::date) AND ((vertriebskanal_zuordnung.gueltig_bis IS NULL) OR (vertriebskanal_zuordnung.gueltig_bis >= ('now'::c (...)
7. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on vertriebskanal_zuordnung_vertriebsstelle_id_idx (cost=0.00..84.89 rows=4,347 width=0) (actual rows= loops=)

  • Index Cond: (vertriebskanal_zuordnung.vertriebsstelle_id IS NULL)
8. 0.000 0.000 ↓ 0.0

Hash (cost=153.04..153.04 rows=5,604 width=41) (actual rows= loops=)

  • Output: vp.partnerkennung, vp.id, vp.name
9. 0.000 0.000 ↓ 0.0

Seq Scan on stammdaten.vertragspartner vp (cost=0.00..153.04 rows=5,604 width=41) (actual rows= loops=)

  • Output: vp.partnerkennung, vp.id, vp.name
10. 0.000 0.000 ↓ 0.0

Hash (cost=60.48..60.48 rows=2,148 width=12) (actual rows= loops=)

  • Output: pb_1.bilanzsumme_id, pb_1.vertragspartner_id, pb_1.marktgebiet_id
11. 0.000 0.000 ↓ 0.0

Seq Scan on stammdaten.partnerbank pb_1 (cost=0.00..60.48 rows=2,148 width=12) (actual rows= loops=)

  • Output: pb_1.bilanzsumme_id, pb_1.vertragspartner_id, pb_1.marktgebiet_id
12. 0.000 0.000 ↓ 0.0

Hash (cost=5.38..5.38 rows=41 width=2,072) (actual rows= loops=)

  • Output: mg.id, mg.name, r.id, r.name, gg.kennung, gg.name
13. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=3.70..5.38 rows=41 width=2,072) (actual rows= loops=)

  • Output: mg.id, mg.name, r.id, r.name, gg.kennung, gg.name
  • Hash Cond: (mg.region_id = r.id)
14. 0.000 0.000 ↓ 0.0

Seq Scan on stammdaten.marktgebiete mg (cost=0.00..1.41 rows=41 width=524) (actual rows= loops=)

  • Output: mg.id, mg.kurzname, mg.name, mg.region_id, mg.fachliche_id
15. 0.000 0.000 ↓ 0.0

Hash (cost=3.55..3.55 rows=12 width=1,552) (actual rows= loops=)

  • Output: r.id, r.name, gg.kennung, gg.name
16. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2.31..3.55 rows=12 width=1,552) (actual rows= loops=)

  • Output: r.id, r.name, gg.kennung, gg.name
  • Hash Cond: (r.organisationseinheit_id = oe.id)
17. 0.000 0.000 ↓ 0.0

Seq Scan on stammdaten.region r (cost=0.00..1.12 rows=12 width=524) (actual rows= loops=)

  • Output: r.id, r.kurzname, r.name, r.organisationseinheit_id, r.fachliche_id
18. 0.000 0.000 ↓ 0.0

Hash (cost=2.23..2.23 rows=7 width=1,036) (actual rows= loops=)

  • Output: oe.id, gg.kennung, gg.name
19. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1.09..2.23 rows=7 width=1,036) (actual rows= loops=)

  • Output: oe.id, gg.kennung, gg.name
  • Hash Cond: (oe.geschaeftsgebiet_id = gg.id)
20. 0.000 0.000 ↓ 0.0

Seq Scan on stammdaten.organisationseinheit oe (cost=0.00..1.07 rows=7 width=8) (actual rows= loops=)

  • Output: oe.id, oe.vertragspartner_id, oe.geschaeftsgebiet_id
21. 0.000 0.000 ↓ 0.0

Hash (cost=1.04..1.04 rows=4 width=1,036) (actual rows= loops=)

  • Output: gg.kennung, gg.name, gg.id
22. 0.000 0.000 ↓ 0.0

Seq Scan on stammdaten.geschaeftsgebiet gg (cost=0.00..1.04 rows=4 width=1,036) (actual rows= loops=)

  • Output: gg.kennung, gg.name, gg.id
23. 0.000 0.000 ↓ 0.0

Hash Join (cost=25,713.25..18,754,667.71 rows=1,451,912,064 width=50) (actual rows= loops=)

  • Output: bkm.aussendemenge, bkm.anfragen, bkm.anfragen_finanzreserve_mit_karte_solo, bkm.treffer_gesamt, bkm.umsatz, bkm.treffer_ec, bkm.rkv_betrag, bkm.preis_pro_treffer, ba.tatsaechliche_liefermenge, pbs.bilanzsumme, mp.liefermenge, mp.umwandlungs (...)
  • Hash Cond: ((pb.partnerkennung)::text = (mp.partnerkennung)::text)
24. 0.000 0.000 ↓ 0.0

Hash Join (cost=21,463.28..220,828.69 rows=11,992,231 width=161) (actual rows= loops=)

  • Output: bkm.aussendemenge, bkm.anfragen, bkm.anfragen_finanzreserve_mit_karte_solo, bkm.treffer_gesamt, bkm.umsatz, bkm.treffer_ec, bkm.rkv_betrag, bkm.preis_pro_treffer, ba.tatsaechliche_liefermenge, pb.partnerkennung, pbs.bilanzsumme
  • Hash Cond: ((ba.obg / 100) = bkm.obg)
25. 0.000 0.000 ↓ 0.0

Seq Scan on mailings.bkm_anmeldung ba (cost=0.00..1,270.98 rows=39,314 width=8) (actual rows= loops=)

  • Output: ba.tatsaechliche_liefermenge, ba.obg
  • Filter: (ba.storno IS FALSE)
26. 0.000 0.000 ↓ 0.0

Hash (cost=11,783.45..11,783.45 rows=269,347 width=165) (actual rows= loops=)

  • Output: bkm.aussendemenge, bkm.anfragen, bkm.anfragen_finanzreserve_mit_karte_solo, bkm.treffer_gesamt, bkm.umsatz, bkm.treffer_ec, bkm.rkv_betrag, bkm.preis_pro_treffer, bkm.obg, pb.obg, pb.partnerkennung, pbs.bilanzsumme
27. 0.000 0.000 ↓ 0.0

Hash Join (cost=7,333.61..11,783.45 rows=269,347 width=165) (actual rows= loops=)

  • Output: bkm.aussendemenge, bkm.anfragen, bkm.anfragen_finanzreserve_mit_karte_solo, bkm.treffer_gesamt, bkm.umsatz, bkm.treffer_ec, bkm.rkv_betrag, bkm.preis_pro_treffer, bkm.obg, pb.obg, pb.partnerkennung, pbs.bilanzsumme
  • Hash Cond: (pb.obg = bkm.obg)
28. 0.000 0.000 ↓ 0.0

Hash Join (cost=135.03..216.06 rows=2,401 width=130) (actual rows= loops=)

  • Output: pb.obg, pb.partnerkennung, pbs.bilanzsumme
  • Hash Cond: (pb.bilanzsumme_id = pbs.id)
29. 0.000 0.000 ↓ 0.0

CTE Scan on partnerbank pb (cost=0.00..48.02 rows=2,401 width=126) (actual rows= loops=)

  • Output: pb.partnerkennung, pb.obg, pb.vp_id, pb.name, pb.gg_kennung, pb.gg_name, pb.mg_id, pb.mg_name, pb.r_id, pb.bilanzsumme_id, pb.r_name
30. 0.000 0.000 ↓ 0.0

Hash (cost=76.68..76.68 rows=4,668 width=12) (actual rows= loops=)

  • Output: pbs.bilanzsumme, pbs.id
31. 0.000 0.000 ↓ 0.0

Seq Scan on stammdaten.partnerbank_bilanzsumme pbs (cost=0.00..76.68 rows=4,668 width=12) (actual rows= loops=)

  • Output: pbs.bilanzsumme, pbs.id
32. 0.000 0.000 ↓ 0.0

Hash (cost=5,186.38..5,186.38 rows=99,056 width=35) (actual rows= loops=)

  • Output: bkm.aussendemenge, bkm.anfragen, bkm.anfragen_finanzreserve_mit_karte_solo, bkm.treffer_gesamt, bkm.umsatz, bkm.treffer_ec, bkm.rkv_betrag, bkm.preis_pro_treffer, bkm.obg
33. 0.000 0.000 ↓ 0.0

Hash Join (cost=7.39..5,186.38 rows=99,056 width=35) (actual rows= loops=)

  • Output: bkm.aussendemenge, bkm.anfragen, bkm.anfragen_finanzreserve_mit_karte_solo, bkm.treffer_gesamt, bkm.umsatz, bkm.treffer_ec, bkm.rkv_betrag, bkm.preis_pro_treffer, bkm.obg
  • Hash Cond: (bkm.zielgruppe_id = zg.id)
34. 0.000 0.000 ↓ 0.0

Seq Scan on mailings.bestandskundenmailing_werbeerfolgskontrolle bkm (cost=0.00..3,816.86 rows=99,086 width=39) (actual rows= loops=)

  • Output: bkm.id, bkm.datensatz_id, bkm.land_id, bkm.obg, bkm.zielgruppe_id, bkm.psp_element_aktion, bkm.bkm, bkm.postauflieferungstermin, bkm.aussendemenge, bkm.anfragen, bkm.anfragen_finanzreserve_mit_karte_solo, (...)
35. 0.000 0.000 ↓ 0.0

Hash (cost=5.94..5.94 rows=116 width=4) (actual rows= loops=)

  • Output: zg.id
36. 0.000 0.000 ↓ 0.0

Hash Join (cost=1.18..5.94 rows=116 width=4) (actual rows= loops=)

  • Output: zg.id
  • Hash Cond: (zg.zielgruppe_mailingplanung = zm.id)
37. 0.000 0.000 ↓ 0.0

Seq Scan on mailings.bkm_zielgruppe zg (cost=0.00..3.16 rows=116 width=8) (actual rows= loops=)

  • Output: zg.id, zg.fachliche_id, zg.geschaeftsgebiet, zg.beschreibung, zg.zielgruppe_mailingplanung
38. 0.000 0.000 ↓ 0.0

Hash (cost=1.08..1.08 rows=8 width=4) (actual rows= loops=)

  • Output: zm.id
39. 0.000 0.000 ↓ 0.0

Seq Scan on mailings.zielgruppe_mailingplanung zm (cost=0.00..1.08 rows=8 width=4) (actual rows= loops=)

  • Output: zm.id
40. 0.000 0.000 ↓ 0.0

Hash (cost=2,235.65..2,235.65 rows=115,865 width=16) (actual rows= loops=)

  • Output: mp.liefermenge, mp.umwandlungsquote, mp.partnerkennung
41. 0.000 0.000 ↓ 0.0

Seq Scan on mailings.mailingplanungsdaten mp (cost=0.00..2,235.65 rows=115,865 width=16) (actual rows= loops=)

  • Output: mp.liefermenge, mp.umwandlungsquote, mp.partnerkennung