explain.depesz.com

PostgreSQL's explain analyze made readable

Result: ffO6

Settings
# exclusive inclusive rows x rows loops node
1. 0.114 60.166 ↓ 1.3 139 1

Nested Loop (cost=38,575.26..38,934.66 rows=104 width=1,269) (actual time=59.091..60.166 rows=139 loops=1)

  • Buffers: shared hit=12,087
2. 0.313 59.079 ↓ 1.3 139 1

HashAggregate (cost=38,574.82..38,575.86 rows=104 width=4) (actual time=59.040..59.079 rows=139 loops=1)

  • Group Key: personal_access_tokens.user_id
  • Buffers: shared hit=11,531
3. 58.766 58.766 ↓ 1.4 148 1

Index Scan using index_pat_on_user_id_and_expires_at on public.personal_access_tokens (cost=0.43..38,574.56 rows=104 width=4) (actual time=1.323..58.766 rows=148 loops=1)

  • Index Cond: (personal_access_tokens.expires_at = CURRENT_DATE)
  • Filter: ((NOT personal_access_tokens.impersonation) AND (NOT personal_access_tokens.revoked) AND (NOT personal_access_tokens.after_expiry_notification_delivered))
  • Rows Removed by Filter: 68
  • Buffers: shared hit=11,531
4. 0.973 0.973 ↑ 1.0 1 139

Index Scan using users_pkey on public.users (cost=0.43..3.45 rows=1 width=1,269) (actual time=0.007..0.007 rows=1 loops=139)

  • Index Cond: (users.id = personal_access_tokens.user_id)
  • Buffers: shared hit=556