explain.depesz.com

PostgreSQL's explain analyze made readable

Result: bP4o

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

Merge Join (cost=13,985,762.92..14,451,529.85 rows=301,522 width=410) (actual rows= loops=)

  • Merge Cond: (tax_history.pid = rec.pid)
2. 0.000 0.000 ↓ 0.0

Unique (cost=13,524,982.21..13,874,346.66 rows=8,220,340 width=268) (actual rows= loops=)

3. 0.000 0.000 ↓ 0.0

Sort (cost=13,524,982.21..13,545,533.06 rows=8,220,340 width=268) (actual rows= loops=)

  • Sort Key: tax_history.pid, tax_history.fips, tax_history.property_type, tax_history.situs_address, tax_history.situs_city, tax_history.situs_state, tax_history.situs_zip, tax_history.square_footage, tax_history.year_built, tax_history.tax_assessed_value, tax_history.tax_improvement_value, tax_history.tax_land_value, tax_history.tax_improvement_percent, tax_history.last_sale_date, tax_history.prior_sale_date, tax_history.company_flag
4. 0.000 0.000 ↓ 0.0

Gather (cost=1,000.00..9,462,082.15 rows=8,220,340 width=268) (actual rows= loops=)

  • Workers Planned: 2
5. 0.000 0.000 ↓ 0.0

Parallel Append (cost=0.00..8,639,048.15 rows=8,220,340 width=268) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on tax_history (cost=0.00..7,388,937.84 rows=3,355,573 width=110) (actual rows= loops=)

  • Filter: ((valid_range @> '2018-12-30'::date) AND (property_type = 'Single Family Residence'::text))
7. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on tax (cost=0.00..1,126,805.21 rows=69,568 width=109) (actual rows= loops=)

  • Filter: ((valid_range @> '2018-12-30'::date) AND (property_type = 'Single Family Residence'::text))
8. 0.000 0.000 ↓ 0.0

Materialize (cost=460,780.71..460,940.20 rows=31,897 width=142) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Sort (cost=460,780.71..460,860.45 rows=31,897 width=142) (actual rows= loops=)

  • Sort Key: rec.pid
10. 0.000 0.000 ↓ 0.0

Gather (cost=1,001.13..456,102.14 rows=31,897 width=142) (actual rows= loops=)

  • Workers Planned: 2
11. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1.13..451,912.44 rows=13,290 width=142) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Parallel Index Scan using recorder_recording_date_index on recorder rec (cost=0.56..342,359.31 rows=13,290 width=126) (actual rows= loops=)

  • Index Cond: ((recording_date >= '2018-12-30'::date) AND (recording_date < '2019-01-06'::date))
  • Filter: ((document_category_type <> 'MORT'::text) AND (arms_length_transfer = 'True'::text))
13. 0.000 0.000 ↓ 0.0

Index Scan using avm_2019_01_03_pid_key on avm_2019_01_03 avm (cost=0.57..8.24 rows=1 width=20) (actual rows= loops=)

  • Index Cond: (pid = rec.pid)