explain.depesz.com

PostgreSQL's explain analyze made readable

Result: bHyf

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

Sort (cost=429,262.88..429,269.80 rows=2,769 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..429,104.56 rows=2,769 width=268) (actual rows= loops=)

3. 0.000 0.000 ↓ 0.0

Append (cost=0.97..429,076.87 rows=2,769 width=328) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

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

5. 0.000 0.000 ↓ 0.0

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

6. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.54..18.07 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-07-26 22:00:00'::timestamp without time zone) AND (fromtimestamputc < '2020-07-27 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.41..5.57 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.16 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..15.11 rows=1 width=268) (actual rows= loops=)

13. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.55..15.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-07-26 22:00:00'::timestamp without time zone) AND (totimestamputc < '2020-07-27 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.41..2.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=783.51..17,280.80 rows=1,188 width=328) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=783.51..17,268.92 rows=1,188 width=408) (actual rows= loops=)

20. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=782.95..14,401.46 rows=1,155 width=142) (actual rows= loops=)

21. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=782.39..11,610.96 rows=1,124 width=80) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Nested Loop (cost=781.83..8,820.46 rows=1,124 width=80) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Nested Loop (cost=781.40..1,910.93 rows=749 width=12) (actual rows= loops=)

24. 0.000 0.000 ↓ 0.0

HashAggregate (cost=780.98..788.43 rows=745 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..779.11 rows=749 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.41..1.52 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.21 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-07-26 22:00:00'::timestamp without time zone) AND (fromtimestamputc < '2020-07-27 22:00:00'::timestamp without time zone))
28. 0.000 0.000 ↓ 0.0

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

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

Index Scan using uix4rakv_uniquekeyuri on revisionauditkeyvalue actualuser (cost=0.56..2.47 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 effectiveuser (cost=0.56..2.47 rows=1 width=78) (actual rows= loops=)

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

Subquery Scan on *SELECT* 4 (cost=14,311.25..46,382.60 rows=907 width=328) (actual rows= loops=)

32. 0.000 0.000 ↓ 0.0

Gather (cost=14,311.25..46,373.53 rows=907 width=408) (actual rows= loops=)

  • Workers Planned: 2
33. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=13,311.25..45,282.83 rows=378 width=408) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=13,310.69..44,417.25 rows=368 width=142) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=13,310.13..43,575.18 rows=358 width=80) (actual rows= loops=)

36. 0.000 0.000 ↓ 0.0

Hash Join (cost=13,309.71..42,388.60 rows=922 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..26,423.68 rows=25,337 width=80) (actual rows= loops=)

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

Hash (cost=9,749.22..9,749.22 rows=184,074 width=32) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

Nested Loop (cost=781.83..9,749.22 rows=184,074 width=32) (actual rows= loops=)

40. 0.000 0.000 ↓ 0.0

Nested Loop (cost=781.40..1,910.93 rows=749 width=12) (actual rows= loops=)

41. 0.000 0.000 ↓ 0.0

HashAggregate (cost=780.98..788.43 rows=745 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..779.11 rows=749 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.41..1.52 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..7.95 rows=252 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.42..1.28 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.34 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.34 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=787.27..188,012.30 rows=668 width=328) (actual rows= loops=)

49. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=787.27..188,005.62 rows=668 width=408) (actual rows= loops=)

50. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=786.41..185,051.62 rows=668 width=180) (actual rows= loops=)

51. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=785.85..183,448.16 rows=649 width=134) (actual rows= loops=)

52. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=785.29..181,886.70 rows=632 width=72) (actual rows= loops=)

53. 0.000 0.000 ↓ 0.0

Nested Loop (cost=782.26..177,665.78 rows=1,040 width=136) (actual rows= loops=)

54. 0.000 0.000 ↓ 0.0

Nested Loop (cost=781.83..9,749.22 rows=184,074 width=32) (actual rows= loops=)

55. 0.000 0.000 ↓ 0.0

Nested Loop (cost=781.40..1,910.93 rows=749 width=12) (actual rows= loops=)

56. 0.000 0.000 ↓ 0.0

HashAggregate (cost=780.98..788.43 rows=745 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..779.11 rows=749 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.41..1.52 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..7.95 rows=252 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.43..0.90 rows=1 width=120) (actual rows= loops=)

  • Index Cond: (timeentryid = rev_2.timeentryid)
  • Filter: ((totimestamputc IS NOT NULL) AND (totimestamputc >= '2020-07-26 22:00:00'::timestamp without time zone) AND (totimestamputc < '2020-07-27 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

Bitmap Heap Scan on timeentrymetadatarevision (cost=3.03..4.05 rows=1 width=88) (actual rows= loops=)

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

BitmapAnd (cost=3.03..3.03 rows=1 width=0) (actual rows= loops=)

63. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtemrtimeentryid (cost=0.00..1.33 rows=14 width=0) (actual rows= loops=)

  • Index Cond: (timeentryid = mdrev_1.timeentryid)
64. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtemr2fromtimestamputc (cost=0.00..1.45 rows=6 width=0) (actual rows= loops=)

  • Index Cond: (fromtimestamputc = mdrev_1.totimestamputc)
65. 0.000 0.000 ↓ 0.0

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

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

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

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

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

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

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

  • Index Cond: (timeentryid = mdrev_1.timeentryid)
  • Filter: (totimestamputc = mdrev_1.totimestamputc)
69. 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)
70. 0.000 0.000 ↓ 0.0

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

71. 0.000 0.000 ↓ 0.0

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

72. 0.000 0.000 ↓ 0.0

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

73. 0.000 0.000 ↓ 0.0

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

74. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.29..22.36 rows=5 width=96) (actual rows= loops=)

75. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=1.00..21.20 rows=2 width=88) (actual rows= loops=)

76. 0.000 0.000 ↓ 0.0

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

77. 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-07-26 22:00:00'::timestamp without time zone) AND (fromtimestamputc < '2020-07-27 22:00:00'::timestamp without time zone))
78. 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)))
79. 0.000 0.000 ↓ 0.0

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

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

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

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

Index Scan using ixtpsstimesheetid on timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_3 (cost=0.43..5.16 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))
82. 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))
83. 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))
84. 0.000 0.000 ↓ 0.0

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

85. 0.000 0.000 ↓ 0.0

Nested Loop Anti Join (cost=3.43..53.82 rows=1 width=408) (actual rows= loops=)

86. 0.000 0.000 ↓ 0.0

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

87. 0.000 0.000 ↓ 0.0

Nested Loop Semi Join (cost=2.42..43.58 rows=1 width=212) (actual rows= loops=)

88. 0.000 0.000 ↓ 0.0

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

89. 0.000 0.000 ↓ 0.0

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

90. 0.000 0.000 ↓ 0.0

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

91. 0.000 0.000 ↓ 0.0

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

92. 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-07-26 22:00:00'::timestamp without time zone) AND (totimestamputc < '2020-07-27 22:00:00'::timestamp without time zone))
93. 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)))
94. 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))
95. 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))
96. 0.000 0.000 ↓ 0.0

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

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

Index Scan using ixtpsstimesheetid on timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_4 (cost=0.43..5.16 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))
98. 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))
99. 0.000 0.000 ↓ 0.0

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

  • Filter: (child_rev_1.id IS NULL)
100. 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)
101. 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)
102. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 8 (cost=1,002.83..127,677.37 rows=1 width=328) (actual rows= loops=)

103. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1,002.83..127,677.36 rows=1 width=408) (actual rows= loops=)

104. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1,002.27..127,674.83 rows=1 width=180) (actual rows= loops=)

105. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1,001.71..127,672.30 rows=1 width=118) (actual rows= loops=)

106. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1,001.15..127,669.77 rows=1 width=56) (actual rows= loops=)

107. 0.000 0.000 ↓ 0.0

Gather (cost=1,000.86..127,669.12 rows=1 width=64) (actual rows= loops=)

  • Workers Planned: 2
108. 0.000 0.000 ↓ 0.0

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

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

Parallel Index Scan using ixter2fromtimestamputc on timeentryrevision rev_5 (cost=0.43..114,063.79 rows=5,788 width=64) (actual rows= loops=)

  • Index Cond: ((totimestamputc IS NOT NULL) AND (totimestamputc >= '2020-07-26 22:00:00'::timestamp without time zone) AND (totimestamputc < '2020-07-27 22:00:00'::timestamp without time zone))
110. 0.000 0.000 ↓ 0.0

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

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

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

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

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

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

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

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

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

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

Subquery Scan on *SELECT* 9 (cost=35,395.66..49,573.56 rows=1 width=410) (actual rows= loops=)

116. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=35,395.66..49,573.55 rows=1 width=490) (actual rows= loops=)

117. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=35,395.23..49,544.50 rows=1 width=226) (actual rows= loops=)

118. 0.000 0.000 ↓ 0.0

Nested Loop (cost=35,394.80..49,515.45 rows=1 width=154) (actual rows= loops=)

119. 0.000 0.000 ↓ 0.0

Nested Loop (cost=35,394.37..49,510.68 rows=1 width=98) (actual rows= loops=)

120. 0.000 0.000 ↓ 0.0

Seq Scan on timesheetapprovalhistory tah (cost=35,393.95..49,508.25 rows=1 width=82) (actual rows= loops=)

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

SubPlan (for Seq Scan)

122. 0.000 0.000 ↓ 0.0

Nested Loop (cost=35,208.57..35,393.95 rows=1 width=16) (actual rows= loops=)

123. 0.000 0.000 ↓ 0.0

Hash Join (cost=35,208.14..35,391.48 rows=1 width=24) (actual rows= loops=)

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

CTE firstactionaftersubmit

125. 0.000 0.000 ↓ 0.0

HashAggregate (cost=30,868.91..30,941.52 rows=7,261 width=24) (actual rows= loops=)

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

CTE submissions

127. 0.000 0.000 ↓ 0.0

Index Scan using ixtahaction on timesheetapprovalhistory (cost=0.42..6,447.61 rows=72,613 width=20) (actual rows= loops=)

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

Merge Join (cost=7,315.43..23,331.06 rows=145,366 width=24) (actual rows= loops=)

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

Sort (cost=7,315.01..7,496.54 rows=72,613 width=20) (actual rows= loops=)

  • Sort Key: submissions.timesheetid
130. 0.000 0.000 ↓ 0.0

CTE Scan on submissions (cost=0.00..1,452.26 rows=72,613 width=20) (actual rows= loops=)

131. 0.000 0.000 ↓ 0.0

Materialize (cost=0.42..8,929.76 rows=363,391 width=20) (actual rows= loops=)

132. 0.000 0.000 ↓ 0.0

Index Only Scan using ixtah2timesheetid on timesheetapprovalhistory tah_3 (cost=0.42..8,021.29 rows=363,391 width=20) (actual rows= loops=)

133. 0.000 0.000 ↓ 0.0

CTE Scan on firstactionaftersubmit faas (cost=0.00..145.22 rows=7,261 width=24) (actual rows= loops=)

134. 0.000 0.000 ↓ 0.0

Hash (cost=4,265.96..4,265.96 rows=44 width=20) (actual rows= loops=)

135. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (action = 3)
  • Filter: (upper(systemprocessidentifier) = 'URN:REPLICON:APPROVAL-SYSTEM-PROCESS:TIMESHEET-SUBMIT-SCRIPT-DATA-AND-VALIDATION'::text)
136. 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))
137. 0.000 0.000 ↓ 0.0

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

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

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

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

Index Scan using ixtahkvtimesheetapprovalhistoryid on timesheetapprovalhistorykeyvalue kv_ea (cost=0.43..29.04 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)
140. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvtimesheetapprovalhistoryid on timesheetapprovalhistorykeyvalue kv_aa (cost=0.43..29.04 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)