explain.depesz.com

PostgreSQL's explain analyze made readable

Result: fWq9

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

Sort (cost=124,796.08..124,806.03 rows=3,979 width=612) (actual rows= loops=)

  • Sort Key: ts.startdate, ts.enddate, ((login.loginname)::character varying(255)) COLLATE "en_US", ts.id
2. 0.000 0.000 ↓ 0.0

Nested Loop (cost=67,776.88..124,558.18 rows=3,979 width=612) (actual rows= loops=)

3. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=67,776.32..96,041.84 rows=4,210 width=170) (actual rows= loops=)

  • Hash Cond: (CASE WHEN ("substring"(ovmo.objecturi, '^urn:replicon-tenant:2e974abad3234a5ca2827b3311aacc91:timesheet:(.*)$'::text) ~* '^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$'::text) THEN ("substring"(ovmo.objecturi, '^urn:replicon-tenant:2e974abad3234a5ca2827b3311aacc91:timesheet:(.*)$'::text))::uuid ELSE NULL::uuid END = ts.id)
4. 0.000 0.000 ↓ 0.0

Hash Join (cost=49,701.14..75,845.29 rows=207,927 width=191) (actual rows= loops=)

  • Hash Cond: (ovmo.objecturi = ov.objecturi)
5. 0.000 0.000 ↓ 0.0

Hash Join (cost=19,483.46..42,768.61 rows=207,927 width=191) (actual rows= loops=)

  • Hash Cond: (ovmo.objectvalidationmessageid = ovm.id)
6. 0.000 0.000 ↓ 0.0

Seq Scan on objectvalidationmessageobject ovmo (cost=0.00..21,529.64 rows=668,764 width=115) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Hash (cost=16,858.48..16,858.48 rows=209,998 width=108) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Index Scan using ixovmoseverity on objectvalidationmessage ovm (cost=0.42..16,858.48 rows=209,998 width=108) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Hash (cost=21,590.08..21,590.08 rows=690,208 width=99) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Seq Scan on objectvalidation ov (cost=0.00..21,590.08 rows=690,208 width=99) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Hash (cost=18,032.68..18,032.68 rows=3,400 width=78) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Gather (cost=1,258.20..18,032.68 rows=3,400 width=78) (actual rows= loops=)

  • Workers Planned: 2
13. 0.000 0.000 ↓ 0.0

Hash Join (cost=258.20..16,692.68 rows=1,417 width=78) (actual rows= loops=)

  • Hash Cond: (f.owneruserid = ui.id)
14. 0.000 0.000 ↓ 0.0

Hash Join (cost=148.94..16,579.54 rows=1,481 width=82) (actual rows= loops=)

  • Hash Cond: (f.owneruserid = login.userid)
15. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.84..16,427.55 rows=1,481 width=64) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.42..15,633.77 rows=1,525 width=44) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on dm_timesheetlist_facts tslist (cost=0.00..13,795.24 rows=1,525 width=20) (actual rows= loops=)

  • Filter: (timesheetstatus = 0)
18. 0.000 0.000 ↓ 0.0

Index Scan using timesheet_pkey on timesheet ts (cost=0.42..1.21 rows=1 width=24) (actual rows= loops=)

  • Index Cond: (id = tslist.timesheetid)
19. 0.000 0.000 ↓ 0.0

Index Scan using dm_timesheetlist_facts_pkey on dm_timesheetlist_facts f (cost=0.42..0.52 rows=1 width=20) (actual rows= loops=)

  • Index Cond: (timesheetid = ts.id)
20. 0.000 0.000 ↓ 0.0

Hash (cost=106.38..106.38 rows=3,338 width=18) (actual rows= loops=)

21. 0.000 0.000 ↓ 0.0

Seq Scan on login (cost=0.00..106.38 rows=3,338 width=18) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Hash (cost=65.63..65.63 rows=3,490 width=4) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Index Only Scan using userinfo_pkey on userinfo ui (cost=0.28..65.63 rows=3,490 width=4) (actual rows= loops=)

24. 0.000 0.000 ↓ 0.0

Index Scan using ixtpsstimesheetid on timesheetpolicysettingssnapshot mesheetpolicysettingssnapshot3 (cost=0.56..6.76 rows=1 width=105) (actual rows= loops=)

  • Index Cond: (timesheetid = ts.id)
  • Filter: (upper(key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text)