explain.depesz.com

PostgreSQL's explain analyze made readable

Result: HYTpa

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

Result (cost=0.00..0.00 rows=0 width=0) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

Result (cost=0.00..5,832.99 rows=1 width=8) (actual rows= loops=)

3. 0.000 0.000 ↓ 0.0

Redistribute Motion 1:20 (slice4; segments: 1) (cost=0.00..5,832.99 rows=1 width=8) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Aggregate (cost=0.00..5,832.99 rows=1 width=8) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Gather Motion 20:1 (slice3; segments: 20) (cost=0.00..5,832.99 rows=1 width=8) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Aggregate (cost=0.00..5,832.99 rows=1 width=8) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

HashAggregate (cost=0.00..5,832.99 rows=1,306,132 width=1) (actual rows= loops=)

  • Group By: atm_mtttts_vk.mid, atm_mtttts_vk.tid, atm_mtttts_vk.termownername
8. 0.000 0.000 ↓ 0.0

Redistribute Motion 20:20 (slice2; segments: 20) (cost=0.00..5,361.61 rows=1,306,132 width=43) (actual rows= loops=)

  • Hash Key: atm_mtttts_vk.mid, atm_mtttts_vk.tid, atm_mtttts_vk.termownername
9. 0.000 0.000 ↓ 0.0

HashAggregate (cost=0.00..5,185.81 rows=1,306,132 width=43) (actual rows= loops=)

  • Group By: atm_mtttts_vk.mid, atm_mtttts_vk.tid, atm_mtttts_vk.termownername
10. 0.000 0.000 ↓ 0.0

Hash Join (cost=0.00..4,665.23 rows=1,306,132 width=43) (actual rows= loops=)

  • Hash Cond: COALESCE(upper(atm_mtttts_vk.mid), '~^'::text) = COALESCE(upper(accrualtransmaster.mid::text), '~^'::text) AND COALESCE(upper(atm_mtttts_vk.tid), '~^'::text) = COALESCE(upper(accrualtransmaster.tid::text), '~^'::text) AND COALESCE(upper(atm_mtttts_vk.termownername), '~^'::text) = COALESCE(upper(accrualtransmaster.termownername::text), '~^'::text)
11. 0.000 0.000 ↓ 0.0

Table Scan on atm_mtttts_vk (cost=0.00..998.36 rows=4,842,986 width=43) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Hash (cost=431.00..431.00 rows=1 width=24) (actual rows= loops=)

13. 0.000 0.000 ↓ 0.0

Broadcast Motion 20:20 (slice1; segments: 20) (cost=0.00..431.00 rows=1 width=24) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Result (cost=0.00..431.00 rows=1 width=24) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Sequence (cost=0.00..431.00 rows=1 width=32) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Partition Selector for accrualtransmaster (dynamic scan id: 1) (cost=10.00..100.00 rows=5 width=4) (actual rows= loops=)

  • Partitions selected: 56 (out of 56)
17. 0.000 0.000 ↓ 0.0

Dynamic Table Scan on accrualtransmaster (dynamic scan id: 1) (cost=0.00..431.00 rows=1 width=32) (actual rows= loops=)

  • Filter: (date_part('year'::text, transdate) * 100::double precision + date_part('month'::text, transdate)) >= 201,906::double precisionOptimizer status: PQO version 3.50.0