explain.depesz.com

PostgreSQL's explain analyze made readable

Result: 3TIF

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

Gather Merge (cost=130,087.66..130,399.18 rows=2,670 width=37) (actual rows= loops=)

  • Workers Planned: 2
  • Functions: 25
  • Options: Inlining false, Optimization false, Expressions true, Deforming true
2. 0.000 0.000 ↓ 0.0

Sort (cost=129,087.64..129,090.97 rows=1,335 width=37) (actual rows= loops=)

  • Sort Key: car.carrier_code, schd.schedule_number, dschds.depart_date_time
3. 0.000 0.000 ↓ 0.0

Hash Join (cost=9,911.34..129,018.33 rows=1,335 width=37) (actual rows= loops=)

  • Hash Cond: (dschds.dispatch_schedule_id = dschd.dispatch_schedule_id)
4. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on dispatch_schedule_stop dschds (cost=0.00..108,216.83 rows=2,900,483 width=16) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Hash (cost=9,905.75..9,905.75 rows=447 width=37) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Hash Join (cost=38.66..9,905.75 rows=447 width=37) (actual rows= loops=)

  • Hash Cond: (schd.carrier_id = car.carrier_id)
7. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.42..9,866.35 rows=447 width=41) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Seq Scan on schedule schd (cost=0.00..203.78 rows=1,254 width=37) (actual rows= loops=)

  • Filter: ((effective_date <= '2020-03-16'::date) AND ((expiration_date IS NULL) OR (expiration_date >= '2020-03-16'::date)) AND (catalog_date < '2020-03-16'::date) AND ((inactive_date IS NULL) OR (inactive_date >= '2020-03-16'::date)))
9. 0.000 0.000 ↓ 0.0

Index Scan using dispatch_schedule_idx1 on dispatch_schedule dschd (cost=0.42..7.70 rows=1 width=20) (actual rows= loops=)

  • Index Cond: ((schedule_id = schd.schedule_id) AND (schedule_date = '2020-03-16'::date))
10. 0.000 0.000 ↓ 0.0

Hash (cost=25.88..25.88 rows=988 width=12) (actual rows= loops=)

  • -> Seq Scan on carrier car (cost=0.00..25.88 rows=988 width=12)JIT: