explain.depesz.com

PostgreSQL's explain analyze made readable

Result: eEnT

Settings
# exclusive inclusive rows x rows loops node
1. 0.000 157,679.338 ↑ 1.0 100 1

Limit (cost=9,412,857.05..9,412,868.71 rows=100 width=271) (actual time=157,679.286..157,679.338 rows=100 loops=1)

2. 4.974 157,680.229 ↑ 4.2 100 1

Gather Merge (cost=9,412,857.05..9,412,906.05 rows=420 width=271) (actual time=157,679.285..157,680.229 rows=100 loops=1)

  • Workers Planned: 2
  • Workers Launched: 2
3. 49.785 157,675.255 ↑ 2.6 80 3 / 3

Sort (cost=9,411,857.02..9,411,857.55 rows=210 width=271) (actual time=157,675.251..157,675.255 rows=80 loops=3)

  • Sort Key: ((ji.jobmetadata ->> 'routeID'::text)) DESC
  • Sort Method: top-N heapsort Memory: 70kB
  • Worker 0: Sort Method: top-N heapsort Memory: 69kB
  • Worker 1: Sort Method: top-N heapsort Memory: 67kB
4. 308.558 157,625.470 ↓ 90.4 18,993 3 / 3

Nested Loop (cost=0.56..9,411,849.00 rows=210 width=271) (actual time=18.286..157,625.470 rows=18,993 loops=3)

5. 80,195.060 80,195.060 ↓ 445.7 372,569 3 / 3

Parallel Seq Scan on jobitems ji (cost=0.00..9,404,691.60 rows=836 width=1,488) (actual time=0.439..80,195.060 rows=372,569 loops=3)

  • Filter: (((jobmetadata ->> 'zone'::text) = ANY ('{""South West"",""South Zone""}'::text[])) AND (to_date((jobmetadata ->> 'scheduledReadDate'::text), 'DD/MM/YYYY'::text) >= '2019-02-20'::date) AND (to_date((jobmetadata ->> 'scheduledReadDate'::text), 'DD/MM/YYYY'::text) <= '2019-04-30'::date))
  • Rows Removed by Filter: 12,999,340
6. 77,121.852 77,121.852 ↓ 0.0 0 1,117,708 / 3

Index Scan using unique_jobitemid on jobs j (cost=0.56..8.56 rows=1 width=63) (actual time=0.207..0.207 rows=0 loops=1,117,708)

  • Index Cond: (jobitemid = ji.id)
  • Filter: (jobstatuscode <> 'Released'::text)
  • Rows Removed by Filter: 1
Planning time : 8.221 ms