explain.depesz.com

PostgreSQL's explain analyze made readable

Result: o8BT

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

Finalize GroupAggregate (cost=4,022,270.95..4,026,684.38 rows=31,197 width=124) (actual rows= loops=)

  • Group Key: (date_trunc('day'::text, gamepay_orders.updated_at))
2. 0.000 0.000 ↓ 0.0

Gather Merge (cost=4,022,270.95..4,025,023.60 rows=18,351 width=128) (actual rows= loops=)

  • Workers Planned: 1
3. 0.000 0.000 ↓ 0.0

Partial GroupAggregate (cost=4,021,270.94..4,021,959.10 rows=18,351 width=128) (actual rows= loops=)

  • Group Key: (date_trunc('day'::text, gamepay_orders.updated_at))
4. 0.000 0.000 ↓ 0.0

Sort (cost=4,021,270.94..4,021,316.82 rows=18,351 width=22) (actual rows= loops=)

  • Sort Key: (date_trunc('day'::text, gamepay_orders.updated_at))
5. 0.000 0.000 ↓ 0.0

Hash Semi Join (cost=67.41..4,019,971.36 rows=18,351 width=22) (actual rows= loops=)

  • Hash Cond: (users.registration_country_id = "ANY_subquery".id)
6. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.87..4,019,606.61 rows=18,351 width=18) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Parallel Index Scan using index_gamepay_orders_on_updated_at on gamepay_orders (cost=0.43..3,989,573.53 rows=18,351 width=18) (actual rows= loops=)

  • Filter: ((amount > 0) AND ((updated_at)::date >= '2020-01-27'::date) AND ((updated_at)::date <= '2020-02-03'::date))
8. 0.000 0.000 ↓ 0.0

Index Only Scan using idx_users_13032019_01 on users (cost=0.44..1.64 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (id = gamepay_orders.user_id)
9. 0.000 0.000 ↓ 0.0

Hash (cost=63.44..63.44 rows=248 width=4) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Subquery Scan on ANY_subquery (cost=60.34..63.44 rows=248 width=4) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Sort (cost=60.34..60.96 rows=248 width=7) (actual rows= loops=)

  • Sort Key: countries.iso
12. 0.000 0.000 ↓ 0.0

Seq Scan on countries (cost=0.00..50.48 rows=248 width=7) (actual rows= loops=)