explain.depesz.com

PostgreSQL's explain analyze made readable

Result: NRLl

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

Hash Join (cost=1,039,044.74..26,901,267.28 rows=2,425,844,847 width=137) (actual rows= loops=)

  • Hash Cond: ((a.postalcode)::text = (c.postalcode)::text)
2. 0.000 0.000 ↓ 0.0

Hash Join (cost=264,727.29..2,158,297.52 rows=135,787,692 width=66) (actual rows= loops=)

  • Hash Cond: ((b.postalcode)::text = (a.postalcode)::text)
3. 0.000 0.000 ↓ 0.0

Seq Scan on cci_occupation_trf b (cost=0.00..162,282.14 rows=8,792,714 width=37) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Hash (cost=125,625.24..125,625.24 rows=7,193,924 width=29) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Seq Scan on cci_population_trf a (cost=0.00..125,625.24 rows=7,193,924 width=29) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Hash (cost=475,090.86..475,090.86 rows=10,639,167 width=99) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Merge Join (cost=3.10..475,090.86 rows=10,639,167 width=99) (actual rows= loops=)

  • Merge Cond: ((c.postalcode)::text = (e.postalcode)::text)
8. 0.000 0.000 ↓ 0.0

Merge Join (cost=1.23..124,327.05 rows=1,519,894 width=72) (actual rows= loops=)

  • Merge Cond: ((c.postalcode)::text = (d.postalcode)::text)
9. 0.000 0.000 ↓ 0.0

Index Scan using cci_canacode_stg_index on cci_canacode_stg c (cost=0.42..48,284.44 rows=799,313 width=39) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Index Scan using cci_laborforce_trf_index on cci_laborforce_trf d (cost=0.43..54,848.82 rows=1,598,626 width=33) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Materialize (cost=0.43..201,364.43 rows=5,595,143 width=27) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Index Scan using cci_income_trf_index on cci_income_trf e (cost=0.43..187,376.58 rows=5,595,143 width=27) (actual rows= loops=)