explain.depesz.com

PostgreSQL's explain analyze made readable

Result: KK7H

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

Sort (cost=269,883.59..269,885.75 rows=861 width=268) (actual rows= loops=)

  • Sort Key: "*SELECT* 1".entryid, "*SELECT* 1".action, "*SELECT* 1".modifiedonutc, "*SELECT* 1".validuntilutc
2. 0.000 0.000 ↓ 0.0

Result (cost=0.97..269,841.62 rows=861 width=268) (actual rows= loops=)

3. 0.000 0.000 ↓ 0.0

Append (cost=0.97..269,833.01 rows=861 width=356) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 1 (cost=0.97..23.23 rows=1 width=324) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.97..23.22 rows=1 width=404) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.54..18.08 rows=1 width=88) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.12..12.45 rows=1 width=80) (actual rows= loops=)

  • Join Filter: (at.rootid = allocatedtime.rootid)
8. 0.000 0.000 ↓ 0.0

Seq Scan on allocatedtime at (cost=0.00..10.30 rows=1 width=80) (actual rows= loops=)

  • Filter: ((fromtimestamputc >= '2020-09-03 22:00:00'::timestamp without time zone) AND (fromtimestamputc < '2020-09-04 22:00:00'::timestamp without time zone))
9. 0.000 0.000 ↓ 0.0

Index Only Scan using ixallocatedtimerootid on allocatedtime (cost=0.12..2.14 rows=1 width=16) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Index Scan using ixtsuseridstartdateenddate on timesheet ts (cost=0.42..5.59 rows=4 width=28) (actual rows= loops=)

  • Index Cond: ((userid = at.userid) AND (at.entrydate >= startdate) AND (at.entrydate <= enddate))
11. 0.000 0.000 ↓ 0.0

Index Scan using ixtpsstimesheetid on timesheetpolicysettingssnapshot tsformat (cost=0.43..5.13 rows=1 width=104) (actual rows= loops=)

  • Index Cond: (timesheetid = ts.id)
  • Filter: ((upper(uri) <> 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text) AND (upper(key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text))
12. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 2 (cost=0.55..18.11 rows=1 width=268) (actual rows= loops=)

13. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.55..18.10 rows=1 width=348) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.14..12.46 rows=1 width=56) (actual rows= loops=)

  • Filter: (child_at.id IS NULL)
15. 0.000 0.000 ↓ 0.0

Seq Scan on allocatedtime at_1 (cost=0.00..10.30 rows=1 width=56) (actual rows= loops=)

  • Filter: ((totimestamputc IS NOT NULL) AND (totimestamputc >= '2020-09-03 22:00:00'::timestamp without time zone) AND (totimestamputc < '2020-09-04 22:00:00'::timestamp without time zone))
16. 0.000 0.000 ↓ 0.0

Index Scan using uixallocatedtime_parent on allocatedtime child_at (cost=0.14..2.16 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (parentid = at_1.id)
17. 0.000 0.000 ↓ 0.0

Index Only Scan using ixtsuseridstartdateenddate on timesheet ts_1 (cost=0.42..5.59 rows=4 width=12) (actual rows= loops=)

  • Index Cond: ((userid = at_1.userid) AND (startdate <= at_1.entrydate) AND (enddate >= at_1.entrydate))
18. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 3 (cost=154.45..3,673.80 rows=243 width=328) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=154.45..3,671.37 rows=243 width=408) (actual rows= loops=)

20. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=153.89..3,072.85 rows=243 width=204) (actual rows= loops=)

21. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=153.33..2,474.34 rows=243 width=142) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Nested Loop (cost=152.77..1,875.82 rows=243 width=80) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Nested Loop (cost=152.34..463.01 rows=144 width=12) (actual rows= loops=)

24. 0.000 0.000 ↓ 0.0

HashAggregate (cost=151.92..153.36 rows=144 width=16) (actual rows= loops=)

  • Group Key: timesheetpolicysettingssnapshot.timesheetid
25. 0.000 0.000 ↓ 0.0

Index Scan using ixtspss2key on timesheetpolicysettingssnapshot (cost=0.68..151.56 rows=144 width=16) (actual rows= loops=)

  • Index Cond: ((upper(key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text) AND (upper(uri) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text))
26. 0.000 0.000 ↓ 0.0

Index Scan using timesheet_pkey on timesheet ts_2 (cost=0.42..2.15 rows=1 width=28) (actual rows= loops=)

  • Index Cond: (id = timesheetpolicysettingssnapshot.timesheetid)
27. 0.000 0.000 ↓ 0.0

Index Scan using ixter2userid on timeentryrevision rev (cost=0.43..9.79 rows=2 width=88) (actual rows= loops=)

  • Index Cond: ((userid = ts_2.userid) AND (entrydate >= ts_2.startdate) AND (entrydate <= ts_2.enddate))
  • Filter: ((fromtimestamputc >= '2020-09-03 22:00:00'::timestamp without time zone) AND (fromtimestamputc < '2020-09-04 22:00:00'::timestamp without time zone))
28. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue effectiveuser (cost=0.56..2.45 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = rev.openingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
29. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue actualuser (cost=0.56..2.45 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = rev.openingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
30. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue changereason (cost=0.56..2.45 rows=1 width=16) (actual rows= loops=)

  • Index Cond: ((revisionauditid = rev.openingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:COMMENT'::text))
31. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 4 (cost=3,579.92..35,895.15 rows=161 width=328) (actual rows= loops=)

32. 0.000 0.000 ↓ 0.0

Gather (cost=3,579.92..35,893.54 rows=161 width=408) (actual rows= loops=)

  • Workers Planned: 2
33. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=2,579.92..34,877.44 rows=67 width=408) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=2,579.36..34,722.75 rows=67 width=142) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=2,578.80..34,568.05 rows=67 width=80) (actual rows= loops=)

36. 0.000 0.000 ↓ 0.0

Hash Join (cost=2,578.38..34,315.82 rows=202 width=96) (actual rows= loops=)

  • Hash Cond: (mdrev.timeentryid = rev_1.timeentryid)
  • Join Filter: ((rev_1.fromtimestamputc <= mdrev.fromtimestamputc) AND ((rev_1.totimestamputc IS NULL) OR (rev_1.totimestamputc > mdrev.fromtimestamputc)))
37. 0.000 0.000 ↓ 0.0

Parallel Index Scan using ixtemr2fromtimestamputc on timeentrymetadatarevision mdrev (cost=0.56..30,604.99 rows=29,701 width=80) (actual rows= loops=)

  • Index Cond: ((fromtimestamputc >= '2020-09-03 22:00:00'::timestamp without time zone) AND (fromtimestamputc < '2020-09-04 22:00:00'::timestamp without time zone))
38. 0.000 0.000 ↓ 0.0

Hash (cost=2,078.14..2,078.14 rows=39,974 width=32) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

Nested Loop (cost=152.77..2,078.14 rows=39,974 width=32) (actual rows= loops=)

40. 0.000 0.000 ↓ 0.0

Nested Loop (cost=152.34..463.01 rows=144 width=12) (actual rows= loops=)

41. 0.000 0.000 ↓ 0.0

HashAggregate (cost=151.92..153.36 rows=144 width=16) (actual rows= loops=)

  • Group Key: timesheetpolicysettingssnapshot_1.timesheetid
42. 0.000 0.000 ↓ 0.0

Index Scan using ixtspss2key on timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_1 (cost=0.68..151.56 rows=144 width=16) (actual rows= loops=)

  • Index Cond: ((upper(key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text) AND (upper(uri) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text))
43. 0.000 0.000 ↓ 0.0

Index Scan using timesheet_pkey on timesheet ts_3 (cost=0.42..2.15 rows=1 width=28) (actual rows= loops=)

  • Index Cond: (id = timesheetpolicysettingssnapshot_1.timesheetid)
44. 0.000 0.000 ↓ 0.0

Index Scan using ixter2userid on timeentryrevision rev_1 (cost=0.43..8.37 rows=285 width=40) (actual rows= loops=)

  • Index Cond: ((userid = ts_3.userid) AND (entrydate >= ts_3.startdate) AND (entrydate <= ts_3.enddate))
45. 0.000 0.000 ↓ 0.0

Index Scan using timeentryrevision_singleinitialrevision on timeentryrevision (cost=0.43..1.24 rows=1 width=24) (actual rows= loops=)

  • Index Cond: (timeentryid = mdrev.timeentryid)
  • Filter: (fromtimestamputc = mdrev.fromtimestamputc)
46. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue effectiveuser_1 (cost=0.56..2.30 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = mdrev.openingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
47. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue actualuser_1 (cost=0.56..2.30 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = mdrev.openingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
48. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 5 (cost=155.88..45,810.98 rows=158 width=328) (actual rows= loops=)

49. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=155.88..45,809.40 rows=158 width=408) (actual rows= loops=)

50. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=155.01..45,170.06 rows=158 width=180) (actual rows= loops=)

51. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=154.45..44,785.72 rows=158 width=134) (actual rows= loops=)

52. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=153.89..44,401.37 rows=158 width=72) (actual rows= loops=)

53. 0.000 0.000 ↓ 0.0

Nested Loop (cost=153.33..43,341.81 rows=253 width=136) (actual rows= loops=)

54. 0.000 0.000 ↓ 0.0

Nested Loop (cost=152.77..2,078.14 rows=39,974 width=32) (actual rows= loops=)

55. 0.000 0.000 ↓ 0.0

Nested Loop (cost=152.34..463.01 rows=144 width=12) (actual rows= loops=)

56. 0.000 0.000 ↓ 0.0

HashAggregate (cost=151.92..153.36 rows=144 width=16) (actual rows= loops=)

  • Group Key: timesheetpolicysettingssnapshot_2.timesheetid
57. 0.000 0.000 ↓ 0.0

Index Scan using ixtspss2key on timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_2 (cost=0.68..151.56 rows=144 width=16) (actual rows= loops=)

  • Index Cond: ((upper(key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text) AND (upper(uri) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text))
58. 0.000 0.000 ↓ 0.0

Index Scan using timesheet_pkey on timesheet ts_4 (cost=0.42..2.15 rows=1 width=28) (actual rows= loops=)

  • Index Cond: (id = timesheetpolicysettingssnapshot_2.timesheetid)
59. 0.000 0.000 ↓ 0.0

Index Scan using ixter2userid on timeentryrevision rev_2 (cost=0.43..8.37 rows=285 width=40) (actual rows= loops=)

  • Index Cond: ((userid = ts_4.userid) AND (entrydate >= ts_4.startdate) AND (entrydate <= ts_4.enddate))
60. 0.000 0.000 ↓ 0.0

Index Scan using ixtemrtimeentryid on timeentrymetadatarevision mdrev_1 (cost=0.56..1.02 rows=1 width=120) (actual rows= loops=)

  • Index Cond: (timeentryid = rev_2.timeentryid)
  • Filter: ((totimestamputc IS NOT NULL) AND (totimestamputc >= '2020-09-03 22:00:00'::timestamp without time zone) AND (totimestamputc < '2020-09-04 22:00:00'::timestamp without time zone) AND (rev_2.fromtimestamputc <= totimestamputc) AND ((rev_2.totimestamputc IS NULL) OR (rev_2.totimestamputc > totimestamputc)))
61. 0.000 0.000 ↓ 0.0

Index Scan using ixtemr2fromtimestamputc on timeentrymetadatarevision (cost=0.56..4.18 rows=1 width=88) (actual rows= loops=)

  • Index Cond: (fromtimestamputc = mdrev_1.totimestamputc)
  • Filter: ((timeentryid = mdrev_1.timeentryid) AND (key = mdrev_1.key) AND (openingauditid = mdrev_1.closingauditid))
62. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue effectiveuser_2 (cost=0.56..2.42 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = mdrev_1.openingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
63. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue actualuser_2 (cost=0.56..2.42 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = mdrev_1.openingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
64. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.86..4.04 rows=1 width=24) (actual rows= loops=)

  • Filter: (child_rev.id IS NULL)
65. 0.000 0.000 ↓ 0.0

Index Scan using ixtertimeentryid on timeentryrevision rev_1_1 (cost=0.43..3.55 rows=1 width=40) (actual rows= loops=)

  • Index Cond: (timeentryid = mdrev_1.timeentryid)
  • Filter: (totimestamputc = mdrev_1.totimestamputc)
66. 0.000 0.000 ↓ 0.0

Index Scan using timeentryrevision_uniquepreviousrevisionid on timeentryrevision child_rev (cost=0.43..0.47 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (previousrevisionid = rev_1_1.id)
67. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 6 (cost=2.85..63.07 rows=1 width=328) (actual rows= loops=)

68. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=2.85..63.06 rows=1 width=408) (actual rows= loops=)

69. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=2.29..60.47 rows=1 width=142) (actual rows= loops=)

70. 0.000 0.000 ↓ 0.0

Nested Loop Semi Join (cost=1.73..57.88 rows=1 width=80) (actual rows= loops=)

71. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.30..22.42 rows=6 width=96) (actual rows= loops=)

72. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=1.01..21.21 rows=2 width=88) (actual rows= loops=)

73. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.58..16.30 rows=2 width=104) (actual rows= loops=)

74. 0.000 0.000 ↓ 0.0

Index Scan using ixoefvr2fromtimestamputc on objectextensionfieldvaluerevision oefvr (cost=0.15..3.19 rows=2 width=80) (actual rows= loops=)

  • Index Cond: ((fromtimestamputc >= '2020-09-03 22:00:00'::timestamp without time zone) AND (fromtimestamputc < '2020-09-04 22:00:00'::timestamp without time zone))
75. 0.000 0.000 ↓ 0.0

Index Scan using ixtertimeentryid on timeentryrevision rev_3 (cost=0.43..6.54 rows=1 width=40) (actual rows= loops=)

  • Index Cond: (timeentryid = oefvr.objectid)
  • Filter: ((fromtimestamputc <= oefvr.fromtimestamputc) AND ((totimestamputc IS NULL) OR (totimestamputc > oefvr.fromtimestamputc)))
76. 0.000 0.000 ↓ 0.0

Index Scan using timeentryrevision_singleinitialrevision on timeentryrevision timeentryrevision_1 (cost=0.43..2.45 rows=1 width=24) (actual rows= loops=)

  • Index Cond: (timeentryid = oefvr.objectid)
  • Filter: (fromtimestamputc = oefvr.fromtimestamputc)
77. 0.000 0.000 ↓ 0.0

Index Scan using uix2tsuseridstartdate on timesheet ts_5 (cost=0.29..0.56 rows=4 width=28) (actual rows= loops=)

  • Index Cond: ((userid = rev_3.userid) AND (rev_3.entrydate >= startdate))
  • Filter: (rev_3.entrydate <= enddate)
78. 0.000 0.000 ↓ 0.0

Index Scan using ixtpsstimesheetid on timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_3 (cost=0.43..5.13 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (timesheetid = ts_5.id)
  • Filter: ((upper(key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text) AND (upper(uri) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text))
79. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue effectiveuser_3 (cost=0.56..2.58 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = oefvr.openingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
80. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue actualuser_3 (cost=0.56..2.58 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = oefvr.openingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
81. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 7 (cost=3.44..53.69 rows=1 width=328) (actual rows= loops=)

82. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=3.44..53.68 rows=1 width=408) (actual rows= loops=)

83. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=2.57..46.66 rows=1 width=180) (actual rows= loops=)

84. 0.000 0.000 ↓ 0.0

Nested Loop Semi Join (cost=2.43..43.45 rows=1 width=212) (actual rows= loops=)

85. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.99..18.25 rows=4 width=228) (actual rows= loops=)

86. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1.70..17.64 rows=1 width=220) (actual rows= loops=)

87. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1.14..15.05 rows=1 width=174) (actual rows= loops=)

88. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.58..12.46 rows=1 width=112) (actual rows= loops=)

89. 0.000 0.000 ↓ 0.0

Index Scan using ixoefvr2fromtimestamputc on objectextensionfieldvaluerevision oefvr_1 (cost=0.15..5.91 rows=1 width=88) (actual rows= loops=)

  • Index Cond: ((totimestamputc IS NOT NULL) AND (totimestamputc >= '2020-09-03 22:00:00'::timestamp without time zone) AND (totimestamputc < '2020-09-04 22:00:00'::timestamp without time zone))
90. 0.000 0.000 ↓ 0.0

Index Scan using ixtertimeentryid on timeentryrevision rev_4 (cost=0.43..6.54 rows=1 width=40) (actual rows= loops=)

  • Index Cond: (timeentryid = oefvr_1.objectid)
  • Filter: ((fromtimestamputc <= oefvr_1.totimestamputc) AND ((totimestamputc IS NULL) OR (totimestamputc > oefvr_1.totimestamputc)))
91. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue effectiveuser_4 (cost=0.56..2.58 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = oefvr_1.openingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
92. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue actualuser_4 (cost=0.56..2.58 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = oefvr_1.openingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
93. 0.000 0.000 ↓ 0.0

Index Scan using uix2tsuseridstartdate on timesheet ts_6 (cost=0.29..0.56 rows=4 width=28) (actual rows= loops=)

  • Index Cond: ((userid = rev_4.userid) AND (rev_4.entrydate >= startdate))
  • Filter: (rev_4.entrydate <= enddate)
94. 0.000 0.000 ↓ 0.0

Index Scan using ixtpsstimesheetid on timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_4 (cost=0.43..5.13 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (timesheetid = ts_6.id)
  • Filter: ((upper(key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text) AND (upper(uri) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text))
95. 0.000 0.000 ↓ 0.0

Index Scan using ixoefvrobjectid on objectextensionfieldvaluerevision (cost=0.15..3.20 rows=1 width=56) (actual rows= loops=)

  • Index Cond: (objectid = oefvr_1.objectid)
  • Filter: ((definitionid = oefvr_1.definitionid) AND (fromtimestamputc = oefvr_1.totimestamputc) AND (openingauditid = oefvr_1.closingauditid))
96. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.86..7.02 rows=1 width=24) (actual rows= loops=)

  • Filter: (child_rev_1.id IS NULL)
97. 0.000 0.000 ↓ 0.0

Index Scan using ixtertimeentryid on timeentryrevision rev_1_2 (cost=0.43..6.53 rows=1 width=40) (actual rows= loops=)

  • Index Cond: (timeentryid = oefvr_1.objectid)
  • Filter: (totimestamputc = oefvr_1.totimestamputc)
98. 0.000 0.000 ↓ 0.0

Index Scan using timeentryrevision_uniquepreviousrevisionid on timeentryrevision child_rev_1 (cost=0.43..0.47 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (previousrevisionid = rev_1_2.id)
99. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 8 (cost=1,002.84..103,493.56 rows=1 width=328) (actual rows= loops=)

100. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1,002.84..103,493.55 rows=1 width=408) (actual rows= loops=)

101. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1,002.28..103,491.04 rows=1 width=180) (actual rows= loops=)

102. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1,001.72..103,488.53 rows=1 width=118) (actual rows= loops=)

103. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1,001.16..103,486.02 rows=1 width=56) (actual rows= loops=)

104. 0.000 0.000 ↓ 0.0

Gather (cost=1,000.87..103,485.37 rows=1 width=64) (actual rows= loops=)

  • Workers Planned: 2
105. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.86..102,485.27 rows=1 width=64) (actual rows= loops=)

  • Filter: (child_rev_2.id IS NULL)
106. 0.000 0.000 ↓ 0.0

Parallel Index Scan using ixter2fromtimestamputc on timeentryrevision rev_5 (cost=0.43..86,811.69 rows=7,760 width=64) (actual rows= loops=)

  • Index Cond: ((totimestamputc IS NOT NULL) AND (totimestamputc >= '2020-09-03 22:00:00'::timestamp without time zone) AND (totimestamputc < '2020-09-04 22:00:00'::timestamp without time zone))
107. 0.000 0.000 ↓ 0.0

Index Scan using timeentryrevision_uniquepreviousrevisionid on timeentryrevision child_rev_2 (cost=0.43..2.01 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (previousrevisionid = rev_5.id)
108. 0.000 0.000 ↓ 0.0

Index Scan using uix2tsuseridstartdate on timesheet ts_7 (cost=0.29..0.61 rows=4 width=12) (actual rows= loops=)

  • Index Cond: ((userid = rev_5.userid) AND (rev_5.entrydate >= startdate))
  • Filter: (rev_5.entrydate <= enddate)
109. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue effectiveuser_5 (cost=0.56..2.50 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = rev_5.closingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
110. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue actualuser_5 (cost=0.56..2.50 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((revisionauditid = rev_5.closingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
111. 0.000 0.000 ↓ 0.0

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue changereason_1 (cost=0.56..2.50 rows=1 width=16) (actual rows= loops=)

  • Index Cond: ((revisionauditid = rev_5.closingauditid) AND (upper(keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:COMMENT'::text))
112. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 9 (cost=43,618.15..80,801.42 rows=294 width=410) (actual rows= loops=)

113. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=43,618.15..80,798.48 rows=294 width=490) (actual rows= loops=)

114. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=43,617.72..72,572.27 rows=294 width=226) (actual rows= loops=)

115. 0.000 0.000 ↓ 0.0

Nested Loop (cost=43,617.28..64,346.06 rows=294 width=154) (actual rows= loops=)

116. 0.000 0.000 ↓ 0.0

Nested Loop (cost=43,616.85..60,937.60 rows=721 width=98) (actual rows= loops=)

117. 0.000 0.000 ↓ 0.0

Seq Scan on timesheetapprovalhistory tah (cost=43,616.43..59,865.97 rows=721 width=82) (actual rows= loops=)

  • Filter: ((NOT (hashed SubPlan 3)) AND (timestamputc >= '2020-09-03 22:00:00'::timestamp without time zone) AND (timestamputc < '2020-09-04 22:00:00'::timestamp without time zone) AND (COALESCE(upper(systemprocessidentifier), ''::text) <> 'URN:REPLICON:APPROVAL-SYSTEM-PROCESS:TIMESHEET-SUBMIT-SCRIPT-DATA-AND-VALIDATION'::text))
118.          

SubPlan (for Seq Scan)

119. 0.000 0.000 ↓ 0.0

Nested Loop (cost=43,405.09..43,616.43 rows=1 width=16) (actual rows= loops=)

120. 0.000 0.000 ↓ 0.0

Hash Join (cost=43,404.67..43,613.96 rows=1 width=24) (actual rows= loops=)

  • Hash Cond: ((faas.timesheetid = tah_2.timesheetid) AND (faas.nextaction_serialnumber = tah_2.serialnumber))
121.          

CTE firstactionaftersubmit

122. 0.000 0.000 ↓ 0.0

HashAggregate (cost=38,537.31..38,620.20 rows=8,289 width=24) (actual rows= loops=)

  • Group Key: submissions.timesheetid, submissions.serialnumber
123.          

CTE submissions

124. 0.000 0.000 ↓ 0.0

Index Scan using ixtahaction on timesheetapprovalhistory (cost=0.42..7,290.36 rows=82,888 width=20) (actual rows= loops=)

  • Index Cond: (action = 1)
125. 0.000 0.000 ↓ 0.0

Hash Join (cost=16,249.54..29,990.69 rows=167,500 width=24) (actual rows= loops=)

  • Hash Cond: (submissions.timesheetid = tah_3.timesheetid)
  • Join Filter: (tah_3.serialnumber > submissions.serialnumber)
126. 0.000 0.000 ↓ 0.0

CTE Scan on submissions (cost=0.00..1,657.76 rows=82,888 width=20) (actual rows= loops=)

127. 0.000 0.000 ↓ 0.0

Hash (cost=11,000.35..11,000.35 rows=419,935 width=20) (actual rows= loops=)

128. 0.000 0.000 ↓ 0.0

Seq Scan on timesheetapprovalhistory tah_3 (cost=0.00..11,000.35 rows=419,935 width=20) (actual rows= loops=)

129. 0.000 0.000 ↓ 0.0

CTE Scan on firstactionaftersubmit faas (cost=0.00..165.78 rows=8,289 width=24) (actual rows= loops=)

130. 0.000 0.000 ↓ 0.0

Hash (cost=4,783.72..4,783.72 rows=50 width=20) (actual rows= loops=)

131. 0.000 0.000 ↓ 0.0

Index Scan using ixtahaction on timesheetapprovalhistory tah_2 (cost=0.42..4,783.72 rows=50 width=20) (actual rows= loops=)

  • Index Cond: (action = 3)
  • Filter: (upper(systemprocessidentifier) = 'URN:REPLICON:APPROVAL-SYSTEM-PROCESS:TIMESHEET-SUBMIT-SCRIPT-DATA-AND-VALIDATION'::text)
132. 0.000 0.000 ↓ 0.0

Index Scan using ixtah2timesheetid on timesheetapprovalhistory tah_1 (cost=0.42..2.44 rows=1 width=36) (actual rows= loops=)

  • Index Cond: ((timesheetid = faas.timesheetid) AND (serialnumber >= faas.submission_serialnumber) AND (serialnumber <= faas.nextaction_serialnumber))
133. 0.000 0.000 ↓ 0.0

Index Only Scan using timesheet_pkey on timesheet ts_8 (cost=0.42..1.49 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (id = tah.timesheetid)
134. 0.000 0.000 ↓ 0.0

Index Scan using ixtpsstimesheetid on timesheetpolicysettingssnapshot tsformat_1 (cost=0.43..4.72 rows=1 width=104) (actual rows= loops=)

  • Index Cond: (timesheetid = ts_8.id)
  • Filter: (upper(key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text)
135. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvtimesheetapprovalhistoryid on timesheetapprovalhistorykeyvalue kv_ea (cost=0.43..27.97 rows=1 width=88) (actual rows= loops=)

  • Index Cond: (timesheetapprovalhistoryid = tah.id)
  • Filter: (upper(key) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:ACTING-EFFECTIVE-USER'::text)
136. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvtimesheetapprovalhistoryid on timesheetapprovalhistorykeyvalue kv_aa (cost=0.43..27.97 rows=1 width=88) (actual rows= loops=)

  • Index Cond: (timesheetapprovalhistoryid = tah.id)
  • Filter: (upper(key) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:ACTING-ACTUAL-USER'::text)