explain.depesz.com

PostgreSQL's explain analyze made readable

Result: Pkk5C

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

Hash Join (cost=359,365.21..417,357.79 rows=873,038 width=216) (actual rows= loops=)

  • Hash Cond: (combined.userid = userinfo1.id)
  • Join Filter: ((combined.date >= allstartenddates.startdate) AND (combined.date <= ((allstartenddates.nextstartdate - '1 day'::interval))))
2. 0.000 0.000 ↓ 0.0

CTE Scan on combined (cost=354,853.35..357,261.24 rows=80,263 width=168) (actual rows= loops=)

3.          

CTE combined

4. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=337,665.72..354,853.35 rows=80,263 width=136) (actual rows= loops=)

  • Hash Cond: ((facts.userid = alloc.userid) AND (facts.date = alloc.entrydate))
5. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=120.54..16,886.79 rows=80,263 width=56) (actual rows= loops=)

  • Hash Cond: (facts.userid = uho.userid)
  • Join Filter: (facts.date = uho.date)
6. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=35.81..15,363.30 rows=80,263 width=104) (actual rows= loops=)

  • Hash Cond: (uprrh.currencyid = exchangerate.fixedcurrencyid)
  • Join Filter: ((facts.date >= exchangerate.effectivedate) AND (facts.date <= exchangerate.enddate))
7.          

Initplan (for Hash Left Join)

8. 0.000 0.000 ↓ 0.0

Seq Scan on systeminformation (cost=0.00..1.01 rows=1 width=4) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=33.10..12,852.37 rows=80,263 width=44) (actual rows= loops=)

  • Hash Cond: (facts.userid = uprrh.userid)
  • Join Filter: ((facts.date >= uprrh.effectivedate) AND (facts.date <= uprrh.enddate))
10. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.42..10,272.79 rows=80,263 width=40) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo ui (cost=0.00..21.68 rows=468 width=12) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Index Scan using dm_userworkschedule_facts_pkey on dm_userworkschedule_facts facts (cost=0.42..20.18 rows=172 width=40) (actual rows= loops=)

  • Index Cond: ((userid = ui.id) AND (date >= ui.startdate) AND (date <= ui.enddate))
13. 0.000 0.000 ↓ 0.0

Hash (cost=23.41..23.41 rows=741 width=16) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Seq Scan on userprojectroleratehistory uprrh (cost=0.00..23.41 rows=741 width=16) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Hash (cost=1.61..1.61 rows=7 width=12) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Seq Scan on exchangerate (cost=0.00..1.61 rows=7 width=12) (actual rows= loops=)

  • Filter: (variablecurrencyid = $0)
17. 0.000 0.000 ↓ 0.0

Hash (cost=82.78..82.78 rows=156 width=28) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

Subquery Scan on uho (cost=74.35..82.78 rows=156 width=28) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Hash Full Join (cost=74.35..81.22 rows=156 width=32) (actual rows= loops=)

  • Hash Cond: (holidayoff.userid = userholiday.userid)
  • Join Filter: (holidayoff.entrydate = userholiday.dateinfo)
20.          

CTE holidayoff

21. 0.000 0.000 ↓ 0.0

Hash Join (cost=23.89..48.80 rows=156 width=28) (actual rows= loops=)

  • Hash Cond: (toe.timeoffid = toff.id)
22.          

Initplan (for Hash Join)

23. 0.000 0.000 ↓ 0.0

Seq Scan on timeoffsysteminformation (cost=0.00..1.01 rows=1 width=4) (actual rows= loops=)

24. 0.000 0.000 ↓ 0.0

Seq Scan on timeoffentries toe (cost=0.00..23.24 rows=624 width=24) (actual rows= loops=)

25. 0.000 0.000 ↓ 0.0

Hash (cost=22.10..22.10 rows=62 width=8) (actual rows= loops=)

26. 0.000 0.000 ↓ 0.0

Seq Scan on timeoffs toff (cost=0.00..22.10 rows=62 width=8) (actual rows= loops=)

  • Filter: (timeoffcodeid = $1)
27.          

CTE userholiday

28. 0.000 0.000 ↓ 0.0

Hash Join (cost=12.18..23.41 rows=66 width=36) (actual rows= loops=)

  • Hash Cond: (uc.calendarid = cd.calendarid)
29. 0.000 0.000 ↓ 0.0

Seq Scan on usercalendar uc (cost=0.00..7.66 rows=466 width=8) (actual rows= loops=)

30. 0.000 0.000 ↓ 0.0

Hash (cost=12.14..12.14 rows=3 width=36) (actual rows= loops=)

31. 0.000 0.000 ↓ 0.0

Seq Scan on calendardetail cd (cost=0.00..12.14 rows=3 width=36) (actual rows= loops=)

  • Filter: (dateinfo > (now())::date)
32. 0.000 0.000 ↓ 0.0

CTE Scan on holidayoff (cost=0.00..3.12 rows=156 width=24) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Hash (cost=1.32..1.32 rows=66 width=32) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

CTE Scan on userholiday (cost=0.00..1.32 rows=66 width=32) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

Hash (cost=337,210.67..337,210.67 rows=22,301 width=88) (actual rows= loops=)

36. 0.000 0.000 ↓ 0.0

Subquery Scan on alloc (cost=336,764.65..337,210.67 rows=22,301 width=88) (actual rows= loops=)

37. 0.000 0.000 ↓ 0.0

HashAggregate (cost=336,764.65..336,987.66 rows=22,301 width=88) (actual rows= loops=)

  • Group Key: "*SELECT* 1".userid, "*SELECT* 1".entrydate
38. 0.000 0.000 ↓ 0.0

Append (cost=205,095.95..329,516.73 rows=223,013 width=32) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 1 (cost=205,095.95..329,357.54 rows=221,578 width=32) (actual rows= loops=)

40. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=205,095.95..327,141.76 rows=221,578 width=181) (actual rows= loops=)

  • Join Filter: (te.id = te_isbillable.timeentryid)
41. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=205,095.40..244,441.60 rows=221,578 width=146) (actual rows= loops=)

  • Hash Cond: (te.id = te_client.timeentryid)
42. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=184,991.02..223,506.29 rows=221,578 width=179) (actual rows= loops=)

  • Hash Cond: (te.id = te_timeofftype.timeentryid)
43. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=164,886.64..202,570.98 rows=221,578 width=179) (actual rows= loops=)

  • Hash Cond: (("substring"(te_breaktype.uri, concat('^urn:replicon-tenant:', si.tenantslug, ':break-type:(.*)$')))::uuid = bt.id)
44. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=164,885.59..201,860.20 rows=221,578 width=217) (actual rows= loops=)

  • Hash Cond: (te.id = te_breaktype.timeentryid)
45. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=144,781.21..180,924.89 rows=221,578 width=163) (actual rows= loops=)

  • Hash Cond: (task.projectid = taskproj.id)
46. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=144,762.20..180,315.00 rows=221,578 width=159) (actual rows= loops=)

  • Hash Cond: (("substring"(te_task.uri, concat('^urn:replicon-tenant:', si.tenantslug, ':task:(.*)$')))::integer = task.id)
47. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=144,732.83..179,588.72 rows=221,578 width=209) (actual rows= loops=)

  • Hash Cond: (("substring"(te_project.uri, concat('^urn:replicon-tenant:', si.tenantslug, ':project:(.*)$')))::integer = proj.id)
48. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=144,713.83..178,864.31 rows=221,578 width=255) (actual rows= loops=)

  • Hash Cond: (te_billingrate.timeentryid = te.id)
49. 0.000 0.000 ↓ 0.0

Seq Scan on timeentrymetadata te_billingrate (cost=0.00..31,114.62 rows=220,790 width=70) (actual rows= loops=)

  • Filter: (upper(key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:BILLING-RATE'::text)
50. 0.000 0.000 ↓ 0.0

Hash (cost=141,944.10..141,944.10 rows=221,578 width=201) (actual rows= loops=)

51. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=109,564.26..141,944.10 rows=221,578 width=201) (actual rows= loops=)

  • Hash Cond: (te_task.timeentryid = te.id)
52. 0.000 0.000 ↓ 0.0

Seq Scan on timeentrymetadata te_task (cost=0.00..31,114.62 rows=92,016 width=70) (actual rows= loops=)

  • Filter: (upper(key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:TASK'::text)
53. 0.000 0.000 ↓ 0.0

Hash (cost=106,794.54..106,794.54 rows=221,578 width=147) (actual rows= loops=)

54. 0.000 0.000 ↓ 0.0

Hash Join (cost=71,866.46..106,794.54 rows=221,578 width=147) (actual rows= loops=)

  • Hash Cond: (te.userid = ui_1.id)
55. 0.000 0.000 ↓ 0.0

Nested Loop (cost=71,848.32..106,189.49 rows=221,578 width=147) (actual rows= loops=)

56. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.00..2.03 rows=1 width=33) (actual rows= loops=)

57. 0.000 0.000 ↓ 0.0

Seq Scan on projectsysteminformation psi (cost=0.00..1.01 rows=1 width=0) (actual rows= loops=)

58. 0.000 0.000 ↓ 0.0

Seq Scan on systeminformation si (cost=0.00..1.01 rows=1 width=33) (actual rows= loops=)

59. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=71,848.32..103,971.68 rows=221,578 width=168) (actual rows= loops=)

  • Hash Cond: (te_activity.timeentryid = te.id)
60. 0.000 0.000 ↓ 0.0

Seq Scan on timeentrymetadata te_activity (cost=0.00..31,114.62 rows=73,363 width=70) (actual rows= loops=)

  • Filter: (upper(key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:ACTIVITY'::text)
61. 0.000 0.000 ↓ 0.0

Hash (cost=69,078.59..69,078.59 rows=221,578 width=114) (actual rows= loops=)

62. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=41,835.42..69,078.59 rows=221,578 width=114) (actual rows= loops=)

  • Hash Cond: (te_comment.timeentryid = te.id)
63. 0.000 0.000 ↓ 0.0

Index Scan using ixtem2timeentryid on timeentrymetadata te_comment (cost=0.55..27,124.25 rows=8,689 width=16) (actual rows= loops=)

  • Index Cond: (upper(key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:COMMENTS'::text)
64. 0.000 0.000 ↓ 0.0

Hash (cost=39,065.15..39,065.15 rows=221,578 width=114) (actual rows= loops=)

65. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=7,609.45..39,065.15 rows=221,578 width=114) (actual rows= loops=)

  • Hash Cond: (te_project.timeentryid = te.id)
66. 0.000 0.000 ↓ 0.0

Seq Scan on timeentrymetadata te_project (cost=0.00..31,114.62 rows=129,930 width=70) (actual rows= loops=)

  • Filter: (upper(key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:PROJECT'::text)
67. 0.000 0.000 ↓ 0.0

Hash (cost=4,839.73..4,839.73 rows=221,578 width=60) (actual rows= loops=)

68. 0.000 0.000 ↓ 0.0

Seq Scan on timeentry te (cost=0.00..4,839.73 rows=221,578 width=60) (actual rows= loops=)

  • Filter: ((timeallocationtype <> 2) OR (timeallocationtype IS NULL))
69. 0.000 0.000 ↓ 0.0

Hash (cost=12.29..12.29 rows=468 width=4) (actual rows= loops=)

70. 0.000 0.000 ↓ 0.0

Index Only Scan using userinfo_pkey on userinfo ui_1 (cost=0.27..12.29 rows=468 width=4) (actual rows= loops=)

71. 0.000 0.000 ↓ 0.0

Hash (cost=15.67..15.67 rows=267 width=8) (actual rows= loops=)

72. 0.000 0.000 ↓ 0.0

Seq Scan on project proj (cost=0.00..15.67 rows=267 width=8) (actual rows= loops=)

73. 0.000 0.000 ↓ 0.0

Hash (cost=19.72..19.72 rows=772 width=8) (actual rows= loops=)

74. 0.000 0.000 ↓ 0.0

Seq Scan on task (cost=0.00..19.72 rows=772 width=8) (actual rows= loops=)

75. 0.000 0.000 ↓ 0.0

Hash (cost=15.67..15.67 rows=267 width=8) (actual rows= loops=)

76. 0.000 0.000 ↓ 0.0

Seq Scan on project taskproj (cost=0.00..15.67 rows=267 width=8) (actual rows= loops=)

77. 0.000 0.000 ↓ 0.0

Hash (cost=20,104.37..20,104.37 rows=1 width=70) (actual rows= loops=)

78. 0.000 0.000 ↓ 0.0

Index Scan using ixtem2timeentryid on timeentrymetadata te_breaktype (cost=0.55..20,104.37 rows=1 width=70) (actual rows= loops=)

  • Index Cond: (upper(key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:BREAK-TYPE'::text)
79. 0.000 0.000 ↓ 0.0

Hash (cost=1.02..1.02 rows=2 width=16) (actual rows= loops=)

80. 0.000 0.000 ↓ 0.0

Seq Scan on breaktype bt (cost=0.00..1.02 rows=2 width=16) (actual rows= loops=)

81. 0.000 0.000 ↓ 0.0

Hash (cost=20,104.37..20,104.37 rows=1 width=70) (actual rows= loops=)

82. 0.000 0.000 ↓ 0.0

Index Scan using ixtem2timeentryid on timeentrymetadata te_timeofftype (cost=0.55..20,104.37 rows=1 width=70) (actual rows= loops=)

  • Index Cond: (upper(key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:TIME-OFF-TYPE'::text)
83. 0.000 0.000 ↓ 0.0

Hash (cost=20,104.37..20,104.37 rows=1 width=70) (actual rows= loops=)

84. 0.000 0.000 ↓ 0.0

Index Scan using ixtem2timeentryid on timeentrymetadata te_client (cost=0.55..20,104.37 rows=1 width=70) (actual rows= loops=)

  • Index Cond: (upper(key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:CLIENT'::text)
85. 0.000 0.000 ↓ 0.0

Materialize (cost=0.55..20,104.37 rows=1 width=17) (actual rows= loops=)

86. 0.000 0.000 ↓ 0.0

Index Scan using ixtem2timeentryid on timeentrymetadata te_isbillable (cost=0.55..20,104.37 rows=1 width=17) (actual rows= loops=)

  • Index Cond: (upper(key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:IS-BILLABLE'::text)
87. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 2 (cost=0.40..3.44 rows=1 width=32) (actual rows= loops=)

88. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.40..3.43 rows=1 width=181) (actual rows= loops=)

89. 0.000 0.000 ↓ 0.0

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

90. 0.000 0.000 ↓ 0.0

Index Only Scan using userinfo_pkey on userinfo ui_2 (cost=0.27..1.29 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (id = at.userid)
91. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 3 (cost=42.72..75.52 rows=624 width=32) (actual rows= loops=)

92. 0.000 0.000 ↓ 0.0

Hash Join (cost=42.72..69.28 rows=624 width=181) (actual rows= loops=)

  • Hash Cond: (toff_1.userid = ui_3.id)
93. 0.000 0.000 ↓ 0.0

Hash Join (cost=24.58..49.49 rows=624 width=24) (actual rows= loops=)

  • Hash Cond: (toe_1.timeoffid = toff_1.id)
94. 0.000 0.000 ↓ 0.0

Seq Scan on timeoffentries toe_1 (cost=0.00..23.24 rows=624 width=24) (actual rows= loops=)

95. 0.000 0.000 ↓ 0.0

Hash (cost=21.48..21.48 rows=248 width=8) (actual rows= loops=)

96. 0.000 0.000 ↓ 0.0

Seq Scan on timeoffs toff_1 (cost=0.00..21.48 rows=248 width=8) (actual rows= loops=)

97. 0.000 0.000 ↓ 0.0

Hash (cost=12.29..12.29 rows=468 width=4) (actual rows= loops=)

98. 0.000 0.000 ↓ 0.0

Index Only Scan using userinfo_pkey on userinfo ui_3 (cost=0.27..12.29 rows=468 width=4) (actual rows= loops=)

99. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 4 (cost=43.54..80.22 rows=810 width=32) (actual rows= loops=)

100. 0.000 0.000 ↓ 0.0

Hash Join (cost=43.54..72.12 rows=810 width=181) (actual rows= loops=)

  • Hash Cond: (punch_pair.endtimepunchid = tp_end.id)
101. 0.000 0.000 ↓ 0.0

Hash Join (cost=30.84..53.23 rows=810 width=48) (actual rows= loops=)

  • Hash Cond: (punch_pair.starttimepunchid = tp_start.id)
102. 0.000 0.000 ↓ 0.0

Hash Join (cost=18.14..38.39 rows=810 width=36) (actual rows= loops=)

  • Hash Cond: (punch_pair.userid = ui_4.id)
103. 0.000 0.000 ↓ 0.0

Seq Scan on denormalizedtimepunchpair punch_pair (cost=0.00..18.10 rows=810 width=36) (actual rows= loops=)

104. 0.000 0.000 ↓ 0.0

Hash (cost=12.29..12.29 rows=468 width=4) (actual rows= loops=)

105. 0.000 0.000 ↓ 0.0

Index Only Scan using userinfo_pkey on userinfo ui_4 (cost=0.27..12.29 rows=468 width=4) (actual rows= loops=)

106. 0.000 0.000 ↓ 0.0

Hash (cost=11.20..11.20 rows=120 width=44) (actual rows= loops=)

107. 0.000 0.000 ↓ 0.0

Seq Scan on timepunch tp_start (cost=0.00..11.20 rows=120 width=44) (actual rows= loops=)

108. 0.000 0.000 ↓ 0.0

Hash (cost=11.20..11.20 rows=120 width=44) (actual rows= loops=)

109. 0.000 0.000 ↓ 0.0

Seq Scan on timepunch tp_end (cost=0.00..11.20 rows=120 width=44) (actual rows= loops=)

110. 0.000 0.000 ↓ 0.0

Hash (cost=4,267.12..4,267.12 rows=19,579 width=55) (actual rows= loops=)

111. 0.000 0.000 ↓ 0.0

Hash Join (cost=3,182.92..4,267.12 rows=19,579 width=55) (actual rows= loops=)

  • Hash Cond: (allstartenddates.userid = userinfo1.id)
112. 0.000 0.000 ↓ 0.0

CTE Scan on allstartenddates (cost=3,155.39..3,991.93 rows=19,579 width=36) (actual rows= loops=)

  • Filter: ((nextstartdate IS NOT NULL) AND (userid <> $11))
113.          

CTE alldates

114. 0.000 0.000 ↓ 0.0

HashAggregate (cost=754.42..952.18 rows=19,776 width=12) (actual rows= loops=)

  • Group Key: userhierarchy.userid, userhierarchy.startdate
115. 0.000 0.000 ↓ 0.0

Append (cost=0.00..655.54 rows=19,776 width=12) (actual rows= loops=)

116. 0.000 0.000 ↓ 0.0

Seq Scan on userhierarchy (cost=0.00..14.89 rows=589 width=12) (actual rows= loops=)

117. 0.000 0.000 ↓ 0.0

Seq Scan on userhierarchy userhierarchy_1 (cost=0.00..16.36 rows=589 width=12) (actual rows= loops=)

118. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 3_1 (cost=0.00..35.43 rows=1,130 width=12) (actual rows= loops=)

119. 0.000 0.000 ↓ 0.0

Seq Scan on userlocation (cost=0.00..21.30 rows=1,130 width=8) (actual rows= loops=)

120. 0.000 0.000 ↓ 0.0

Seq Scan on userlocation userlocation_1 (cost=0.00..24.12 rows=1,130 width=12) (actual rows= loops=)

121. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 5 (cost=0.00..35.43 rows=1,130 width=12) (actual rows= loops=)

122. 0.000 0.000 ↓ 0.0

Seq Scan on userdivision (cost=0.00..21.30 rows=1,130 width=8) (actual rows= loops=)

123. 0.000 0.000 ↓ 0.0

Seq Scan on userdivision userdivision_1 (cost=0.00..24.12 rows=1,130 width=12) (actual rows= loops=)

124. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 7 (cost=0.00..30.40 rows=862 width=12) (actual rows= loops=)

125. 0.000 0.000 ↓ 0.0

Seq Scan on usercostcenter (cost=0.00..19.62 rows=862 width=8) (actual rows= loops=)

126. 0.000 0.000 ↓ 0.0

Seq Scan on usercostcenter usercostcenter_1 (cost=0.00..21.78 rows=862 width=12) (actual rows= loops=)

127. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 9 (cost=0.00..35.43 rows=1,130 width=12) (actual rows= loops=)

128. 0.000 0.000 ↓ 0.0

Seq Scan on userservicecenter (cost=0.00..21.30 rows=1,130 width=8) (actual rows= loops=)

129. 0.000 0.000 ↓ 0.0

Seq Scan on userservicecenter userservicecenter_1 (cost=0.00..24.12 rows=1,130 width=12) (actual rows= loops=)

130. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 11 (cost=0.00..35.43 rows=1,130 width=12) (actual rows= loops=)

131. 0.000 0.000 ↓ 0.0

Seq Scan on userdepartmentgroup (cost=0.00..21.30 rows=1,130 width=8) (actual rows= loops=)

132. 0.000 0.000 ↓ 0.0

Seq Scan on userdepartmentgroup userdepartmentgroup_1 (cost=0.00..24.12 rows=1,130 width=12) (actual rows= loops=)

133. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 13 (cost=0.00..35.43 rows=1,130 width=12) (actual rows= loops=)

134. 0.000 0.000 ↓ 0.0

Seq Scan on useremployeetypegroup (cost=0.00..21.30 rows=1,130 width=8) (actual rows= loops=)

135. 0.000 0.000 ↓ 0.0

Seq Scan on useremployeetypegroup useremployeetypegroup_1 (cost=0.00..24.12 rows=1,130 width=12) (actual rows= loops=)

136. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 15 (cost=0.00..34.98 rows=1,110 width=12) (actual rows= loops=)

137. 0.000 0.000 ↓ 0.0

Seq Scan on userprojectroleassignment (cost=0.00..21.10 rows=1,110 width=8) (actual rows= loops=)

138. 0.000 0.000 ↓ 0.0

Seq Scan on userprojectroleassignment userprojectroleassignment_1 (cost=0.00..23.88 rows=1,110 width=12) (actual rows= loops=)

139. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 17 (cost=0.00..32.67 rows=741 width=12) (actual rows= loops=)

140. 0.000 0.000 ↓ 0.0

Seq Scan on userprojectroleratehistory (cost=0.00..23.41 rows=741 width=8) (actual rows= loops=)

141. 0.000 0.000 ↓ 0.0

Seq Scan on userprojectroleratehistory userprojectroleratehistory_1 (cost=0.00..25.26 rows=741 width=12) (actual rows= loops=)

142. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 19 (cost=0.00..13.53 rows=468 width=12) (actual rows= loops=)

143. 0.000 0.000 ↓ 0.0

Seq Scan on userpayrollratehistory (cost=0.00..7.68 rows=468 width=8) (actual rows= loops=)

144. 0.000 0.000 ↓ 0.0

Seq Scan on userpayrollratehistory userpayrollratehistory_1 (cost=0.00..8.85 rows=468 width=12) (actual rows= loops=)

145. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 21 (cost=0.27..18.14 rows=468 width=12) (actual rows= loops=)

146. 0.000 0.000 ↓ 0.0

Index Only Scan using userinfo_pkey on userinfo (cost=0.27..12.29 rows=468 width=8) (actual rows= loops=)

147. 0.000 0.000 ↓ 0.0

Index Only Scan using userinfo_pkey on userinfo userinfo_1 (cost=0.27..12.29 rows=468 width=12) (actual rows= loops=)

148.          

CTE allstartenddates

149. 0.000 0.000 ↓ 0.0

WindowAgg (cost=1,806.68..2,202.20 rows=19,776 width=20) (actual rows= loops=)

150. 0.000 0.000 ↓ 0.0

Sort (cost=1,806.68..1,856.12 rows=19,776 width=12) (actual rows= loops=)

  • Sort Key: main.userid, main.startdate
151. 0.000 0.000 ↓ 0.0

CTE Scan on alldates main (cost=0.00..395.52 rows=19,776 width=12) (actual rows= loops=)

152.          

Initplan (for CTE Scan)

153. 0.000 0.000 ↓ 0.0

Seq Scan on systeminformation systeminformation_1 (cost=0.00..1.01 rows=1 width=4) (actual rows= loops=)

154. 0.000 0.000 ↓ 0.0

Hash (cost=21.68..21.68 rows=468 width=19) (actual rows= loops=)

155. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo userinfo1 (cost=0.00..21.68 rows=468 width=19) (actual rows= loops=)