explain.depesz.com

PostgreSQL's explain analyze made readable

Result: uBtj

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

Sort (cost=15,078.72..15,078.72 rows=1 width=36) (actual rows= loops=)

  • Sort Key: a.created_at DESC
2. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=3,769.87..15,078.71 rows=1 width=36) (actual rows= loops=)

3. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=3,769.31..14,981.60 rows=1 width=36) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Nested Loop (cost=3,768.89..14,967.53 rows=1 width=36) (actual rows= loops=)

  • Join Filter: (a.id = m.id)
5. 0.000 0.000 ↓ 0.0

Nested Loop (cost=3,768.46..14,965.43 rows=1 width=44) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on applications a (cost=3,767.90..14,929.35 rows=7 width=28) (actual rows= loops=)

  • Recheck Cond: (created_at > '2019-10-01 00:00:00+00'::timestamp with time zone)
  • Filter: (is_active AND (NOT application_has_accepted_offers) AND (responses_expired_at > now()))
7. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on created_at_index (cost=0.00..3,767.90 rows=138,597 width=0) (actual rows= loops=)

  • Index Cond: (created_at > '2019-10-01 00:00:00+00'::timestamp with time zone)
8. 0.000 0.000 ↓ 0.0

Index Only Scan using application_revision on filtered_products f (cost=0.56..5.15 rows=1 width=20) (actual rows= loops=)

  • Index Cond: ((application_id = a.id) AND (application_revision = a.revision) AND (product_id = '0d6d1ad6-7536-4110-9777-b3abc314ce5a'::uuid))
9. 0.000 0.000 ↓ 0.0

Index Scan using application_metadata_pkey on application_metadata m (cost=0.42..2.09 rows=1 width=24) (actual rows= loops=)

  • Index Cond: (id = f.application_id)
  • Filter: ((meta_status)::text = 'ongoing'::text)
10. 0.000 0.000 ↓ 0.0

Index Only Scan using applications_pk on applications b (cost=0.42..7.87 rows=1 width=20) (actual rows= loops=)

  • Index Cond: ((id = a.id) AND (revision > a.revision))
11. 0.000 0.000 ↓ 0.0

Index Scan using application_responses_application_id_revisionx on application_responses r (cost=0.56..48.83 rows=1 width=20) (actual rows= loops=)

  • Index Cond: ((application_id = a.id) AND (application_revision = a.revision))
  • Filter: ((product_id = '0d6d1ad6-7536-4110-9777-b3abc314ce5a'::uuid) AND ((status)::text = 'active'::text))