explain.depesz.com

PostgreSQL's explain analyze made readable

Result: hn3y

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

GroupAggregate (cost=2,855.12..2,855.14 rows=1 width=34) (actual rows= loops=)

  • Group Key: u.id
  • Filter: (count(DISTINCT t2.id) = 0)
2. 0.000 0.000 ↓ 0.0

Sort (cost=2,855.12..2,855.12 rows=1 width=42) (actual rows= loops=)

  • Sort Key: u.id
3. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=27.48..2,855.11 rows=1 width=42) (actual rows= loops=)

  • Join Filter: (n."accountId" = u."accountId")
4. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=4.64..85.09 rows=1 width=42) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Nested Loop (cost=4.21..54.80 rows=1 width=34) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Nested Loop (cost=3.79..45.59 rows=1 width=34) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=3.50..16.90 rows=1 width=8) (actual rows= loops=)

  • Hash Cond: (o.id = oeb."organizationId")
  • Filter: (oeb.id IS NULL)
8. 0.000 0.000 ↓ 0.0

Seq Scan on organization o (cost=0.00..12.45 rows=148 width=8) (actual rows= loops=)

  • Filter: ((subscription <> 'suspended'::text) AND ("amountPerMonth" > 0))
9. 0.000 0.000 ↓ 0.0

Hash (cost=3.46..3.46 rows=3 width=16) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Seq Scan on "organizationEmailBlacklist" oeb (cost=0.00..3.46 rows=3 width=16) (actual rows= loops=)

  • Filter: (("deletedAt" IS NULL) AND (email = 'credit-threshold-way-reached'::text))
11. 0.000 0.000 ↓ 0.0

Index Scan using idx_16481_user_status_organization_id on "user" u (cost=0.29..28.51 rows=18 width=34) (actual rows= loops=)

  • Index Cond: ((status = ANY ('{person,personAndAdmin}'::text[])) AND ("organizationId" = o.id))
  • Filter: (("deletedAt" IS NULL) AND (date("createdAt") < '2020-08-03'::date))
12. 0.000 0.000 ↓ 0.0

Index Scan using transaction_6 on transaction t1 (cost=0.43..9.20 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (("userId" = u.id) AND (my_date_cast("createdAt") = '2020-08-03'::date))
  • Filter: (("deletedAt" IS NULL) AND (id IS NOT NULL))
13. 0.000 0.000 ↓ 0.0

Index Scan using transaction_6 on transaction t2 (cost=0.43..29.70 rows=59 width=16) (actual rows= loops=)

  • Index Cond: (("userId" = u.id) AND (my_date_cast("createdAt") > '2020-08-03'::date))
  • Filter: ("deletedAt" IS NULL)
14. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on notification n (cost=22.84..2,766.49 rows=282 width=8) (actual rows= loops=)

  • Recheck Cond: (type = 'credit-threshold-way-reached'::text)
  • Filter: (("deletedAt" IS NULL) AND (date("createdAt") > '2020-08-03'::date))
15. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on idx_16551_notification_type (cost=0.00..22.77 rows=846 width=0) (actual rows= loops=)

  • Index Cond: (type = 'credit-threshold-way-reached'::text)