explain.depesz.com

PostgreSQL's explain analyze made readable

Result: Wmgr : 345

Settings
# exclusive inclusive rows x rows loops node
1. 0.061 16.975 ↓ 7.7 154 1

Unique (cost=406.81..406.96 rows=20 width=16) (actual time=16.899..16.975 rows=154 loops=1)

2. 0.206 16.914 ↓ 15.5 310 1

Sort (cost=406.81..406.86 rows=20 width=16) (actual time=16.898..16.914 rows=310 loops=1)

  • Sort Key: rtt.mobject_id, rtt.route_id
  • Sort Method: quicksort Memory: 39kB
3. 8.206 16.708 ↓ 15.5 310 1

Nested Loop Semi Join (cost=294.33..406.37 rows=20 width=16) (actual time=3.754..16.708 rows=310 loops=1)

  • Join Filter: (rtt.mobject_id = m.id)
  • Rows Removed by Join Filter: 53150
4. 0.131 1.992 ↓ 7.8 310 1

Bitmap Heap Scan on uzgps_routing_trip_template rtt (cost=249.15..351.34 rows=40 width=16) (actual time=1.873..1.992 rows=310 loops=1)

  • Recheck Cond: ((time_start >= ((date_part('epoch'::text, date_trunc('day'::text, now())) * '1000'::double precision))::bigint) AND (time_start <= ((date_part('epoch'::text, date_trunc('day'::text, (now() + '1 day'::interval))) * '1000': (...)
  • Heap Blocks: exact=8
5. 1.861 1.861 ↓ 7.8 310 1

Bitmap Index Scan on uzgps_routing_trip_template_status_time_start_idx (cost=0.00..249.14 rows=40 width=0) (actual time=1.861..1.861 rows=310 loops=1)

  • Index Cond: ((time_start >= ((date_part('epoch'::text, date_trunc('day'::text, now())) * '1000'::double precision))::bigint) AND (time_start <= ((date_part('epoch'::text, date_trunc('day'::text, (now() + '1 day'::interval))) * '10 (...)
6. 4.583 6.510 ↓ 57.3 172 310

Materialize (cost=45.18..53.24 rows=3 width=8) (actual time=0.004..0.021 rows=172 loops=310)

7. 0.043 1.927 ↓ 70.7 212 1

Nested Loop (cost=45.18..53.22 rows=3 width=8) (actual time=1.263..1.927 rows=212 loops=1)

8. 0.028 1.180 ↓ 2.0 2 1

HashAggregate (cost=44.91..44.91 rows=1 width=16) (actual time=1.163..1.180 rows=2 loops=1)

  • Group Key: c.id
9. 0.023 1.152 ↓ 11.0 11 1

Nested Loop Semi Join (cost=1.41..44.90 rows=1 width=16) (actual time=0.161..1.152 rows=11 loops=1)

  • Join Filter: (c.id = uzgps_user_access_list.ual_contractid)
  • Rows Removed by Join Filter: 55
10. 0.997 0.997 ↓ 11.0 11 1

Seq Scan on uzgps_contract c (cost=0.00..43.16 rows=1 width=8) (actual time=0.038..0.997 rows=11 loops=1)

  • Filter: ((status_id = ANY ('{1,2}'::bigint[])) AND ((c_status)::text = 'A'::text))
11. 0.054 0.132 ↑ 1.7 6 11

HashAggregate (cost=1.41..1.51 rows=10 width=8) (actual time=0.011..0.012 rows=6 loops=11)

  • Group Key: uzgps_user_access_list.ual_contractid
12. 0.078 0.078 ↓ 3.2 32 1

Seq Scan on uzgps_user_access_list (cost=0.00..1.39 rows=10 width=8) (actual time=0.063..0.078 rows=32 loops=1)

  • Filter: (ual_routing > 0)
13. 0.704 0.704 ↓ 106.0 106 2

Index Scan using uzgps_mobject_mo_contract_id_mo_status_idx on uzgps_mobject m (cost=0.28..8.30 rows=1 width=16) (actual time=0.087..0.352 rows=106 loops=2)

  • Index Cond: ((mo_contract_id = c.id) AND ((mo_status)::text = 'A'::text))