explain.depesz.com

PostgreSQL's explain analyze made readable

Result: j9x : ///0

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

Nested Loop (cost=0.00..422.91 rows=1 width=36) (actual rows= loops=)

  • Join Filter: ((max(p.date)) = p.date)
2. 0.000 0.000 ↓ 0.0

Merge Join (cost=0.00..419.32 rows=7 width=52) (actual rows= loops=)

  • Merge Cond: (((i.good)::text = (i.good)::text) AND (i.date = i.date))
3. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=0.00..340.00 rows=200 width=28) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Merge Join (cost=0.00..313.50 rows=3,267 width=28) (actual rows= loops=)

  • Merge Cond: ((i.good)::text = (p.good)::text)
  • Join Filter: (i.date >= p.date)
5. 0.000 0.000 ↓ 0.0

Index Only Scan using inventory_good_to_date on inventory i (cost=0.00..69.25 rows=1,400 width=24) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Materialize (cost=0.00..72.75 rows=1,400 width=24) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Index Only Scan using price_good_to_date on price p (cost=0.00..69.25 rows=1,400 width=24) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Index Scan using inventory_good_to_date on inventory i (cost=0.00..69.25 rows=1,400 width=28) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Index Scan using price_good_to_date on price p (cost=0.00..0.42 rows=7 width=28) (actual rows= loops=)

  • Index Cond: ((good)::text = (i.good)::text)