explain.depesz.com

PostgreSQL's explain analyze made readable

Result: b8jO

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

Sort (cost=9,110,402.94..9,111,529.31 rows=450,548 width=3,359) (actual rows= loops=)

  • Sort Key: ((pj.code)::character varying(50)) COLLATE "en_US", ((pj.name)::character varying(255)) COLLATE "en_US", ((tk.name)::character varying(255)) COLLATE "en_US", ((tk.code)::character varying(50)) COLLATE "en_US", ((ui.externalid)::character varying(255)) COLLATE "en_US", ((ui.lastname)::character varying(50)) COLLATE "en_US", ((ui.firstname)::character varying(50)) COLLATE "en_US", ui.duplicatename, ((login.loginname)::character varying(255)) COLLATE "en_US", ((ui.displayname)::text) COLLATE "en_US", ((dep.name)::character varying(255)) COLLATE "en_US", "*SELECT* 1".entrydate, ts.enddate, tslist.timesheetstatus, ((tdh.hierarchysorting)::text) COLLATE "en_US", ((tdh.hierarchytaskname)::text) COLLATE "en_US", ((timeentrymetadata8.text)::text) COLLATE "en_US", ((billingrate9.name)::character varying(50)) COLLATE "en_US
2.          

Initplan (for Sort)

3. 0.000 0.000 ↓ 0.0

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

4. 0.000 0.000 ↓ 0.0

Hash Join (cost=6,276,222.50..8,695,860.50 rows=450,548 width=3,359) (actual rows= loops=)

  • Hash Cond: (pj.id = project18.id)
5. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=6,275,891.30..8,688,543.60 rows=2,658,233 width=835) (actual rows= loops=)

  • Hash Cond: ("*SELECT* 1".billingrateid = billingrate9.id)
6. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=6,275,878.41..8,681,477.98 rows=2,658,233 width=826) (actual rows= loops=)

  • Hash Cond: ("*SELECT* 1".timeentryid = timeentrymetadata8.timeentryid)
7. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=5,972,381.30..7,899,782.05 rows=2,658,233 width=798) (actual rows= loops=)

  • Hash Cond: (tk.id = tdh.taskid)
8. 0.000 0.000 ↓ 0.0

Hash Join (cost=5,966,658.92..7,887,081.52 rows=2,658,233 width=740) (actual rows= loops=)

  • Hash Cond: ("*SELECT* 1".userid = login.userid)
9. 0.000 0.000 ↓ 0.0

Hash Join (cost=5,966,577.29..7,850,575.12 rows=2,691,877 width=219) (actual rows= loops=)

  • Hash Cond: (pj.id = project17.id)
10. 0.000 0.000 ↓ 0.0

Hash Join (cost=5,966,354.99..7,770,853.31 rows=30,251,574 width=215) (actual rows= loops=)

  • Hash Cond: ("*SELECT* 1".userid = ui.id)
11. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=5,966,287.44..7,691,053.92 rows=30,251,574 width=175) (actual rows= loops=)

  • Hash Cond: (task13.id = tk.id)
12. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=5,959,544.14..7,268,351.48 rows=30,251,574 width=149) (actual rows= loops=)

  • Hash Cond: (timeentrymetadata14.timeentryid = "*SELECT* 1".timeentryid)
13. 0.000 0.000 ↓ 0.0

Index Scan using ixtem2timeentryid on timeentrymetadata timeentrymetadata14 (cost=0.56..205,784.54 rows=112 width=78) (actual rows= loops=)

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

Hash (cost=4,901,919.90..4,901,919.90 rows=30,251,574 width=153) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,877,049.30..4,901,919.90 rows=30,251,574 width=153) (actual rows= loops=)

  • Hash Cond: (ts.id = tslist.timesheetid)
16. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1,843,116.91..4,788,329.13 rows=30,345,308 width=165) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,843,116.49..2,302,414.46 rows=1,777,138 width=141) (actual rows= loops=)

  • Hash Cond: (COALESCE(project11.id, task13.projectid) = pj.id)
18. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,842,755.53..2,297,383.28 rows=1,777,138 width=84) (actual rows= loops=)

  • Hash Cond: (CASE WHEN ("substring"(timeentrymetadata12.uri, '^urn:replicon-tenant:d39c603ba5ee46da9a42069eec872cf2:task:(.*)$'::text) ~ '^\s*[-]?[0-9]+\s*$'::text) THEN ("substring"(timeentrymetadata12.uri, '^urn:replicon-tenant:d39c603ba5ee46da9a42069eec872cf2:task:(.*)$'::text))::integer ELSE NULL::integer END = task13.id)
19. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,838,296.62..2,287,148.40 rows=1,777,138 width=138) (actual rows= loops=)

  • Hash Cond: (CASE WHEN ("substring"(timeentrymetadata10.uri, '^urn:replicon-tenant:d39c603ba5ee46da9a42069eec872cf2:project:(.*)$'::text) ~ '^\s*[-]?[0-9]+\s*$'::text) THEN ("substring"(timeentrymetadata10.uri, '^urn:replicon-tenant:d39c603ba5ee46da9a42069eec872cf2:project:(.*)$'::text))::integer ELSE NULL::integer END = project11.id)
20. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=1,838,168.50..2,281,236.69 rows=1,777,138 width=196) (actual rows= loops=)

  • Merge Cond: ("*SELECT* 1".timeentryid = timeentrymetadata12.timeentryid)
21. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=1,838,168.07..1,868,397.34 rows=1,773,142 width=134) (actual rows= loops=)

  • Merge Cond: ("*SELECT* 1".timeentryid = timeentrymetadata10.timeentryid)
22. 0.000 0.000 ↓ 0.0

Sort (cost=1,394,861.88..1,399,294.74 rows=1,773,142 width=72) (actual rows= loops=)

  • Sort Key: "*SELECT* 1".timeentryid
23. 0.000 0.000 ↓ 0.0

Append (cost=508,494.60..1,210,828.57 rows=1,773,142 width=72) (actual rows= loops=)

24. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 1 (cost=508,494.60..703,290.23 rows=1,773,038 width=72) (actual rows= loops=)

  • Filter: ((hashed SubPlan 2) OR (hashed SubPlan 11))
25. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1,049.83..160,384.72 rows=2,364,050 width=140) (actual rows= loops=)

26. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1,049.83..12,613.47 rows=3,637 width=213) (actual rows= loops=)

27. 0.000 0.000 ↓ 0.0

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

28. 0.000 0.000 ↓ 0.0

Gather (cost=1,049.83..12,576.09 rows=3,637 width=180) (actual rows= loops=)

  • Workers Planned: 2
29. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=49.83..11,212.39 rows=1,515 width=180) (actual rows= loops=)

30. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=49.27..7,327.32 rows=1,515 width=118) (actual rows= loops=)

31. 0.000 0.000 ↓ 0.0

Parallel Bitmap Heap Scan on timeentry te (cost=48.72..3,442.24 rows=1,515 width=56) (actual rows= loops=)

  • Recheck Cond: ((entrydate >= '2020-07-25'::date) AND (entrydate <= '2020-07-31'::date))
  • Filter: ((timeallocationtype <> 2) OR (timeallocationtype IS NULL))
32. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixte2entrydate (cost=0.00..47.81 rows=3,638 width=0) (actual rows= loops=)

  • Index Cond: ((entrydate >= '2020-07-25'::date) AND (entrydate <= '2020-07-31'::date))
33. 0.000 0.000 ↓ 0.0

Index Scan using ixtem2timeentryid on timeentrymetadata tembillingrate (cost=0.56..2.55 rows=1 width=78) (actual rows= loops=)

  • Index Cond: ((timeentryid = te.id) AND (upper(key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:BILLING-RATE'::text))
34. 0.000 0.000 ↓ 0.0

Index Scan using ixtem2timeentryid on timeentrymetadata temdbreaktype (cost=0.56..2.55 rows=1 width=78) (actual rows= loops=)

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

Materialize (cost=0.00..19.75 rows=650 width=32) (actual rows= loops=)

36. 0.000 0.000 ↓ 0.0

Seq Scan on projectsysteminformation psi (cost=0.00..16.50 rows=650 width=32) (actual rows= loops=)

37.          

SubPlan (for Subquery Scan)

38. 0.000 0.000 ↓ 0.0

Index Only Scan using timeentry_pkey on timeentry timeentry19 (cost=0.43..39,656.69 rows=1,924,751 width=16) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.28..462,966.21 rows=3,993 width=4) (actual rows= loops=)

  • Filter: (((userhierarchy21.supervisorid = 1,021) AND ((userhierarchy21.startdate IS NULL) OR (userhierarchy21.startdate <= '2020-08-04'::date)) AND ((userhierarchy21.enddate IS NULL) OR (userhierarchy21.enddate >= '2020-08-04'::date))) OR (timeoffs20.userid = 1,021) OR (alternatives: SubPlan 3 or hashed SubPlan 4) OR (alternatives: SubPlan 5 or hashed SubPlan 6) OR (SubPlan 7) OR (SubPlan 8) OR (SubPlan 9) OR (SubPlan 10))
40. 0.000 0.000 ↓ 0.0

Seq Scan on timeoffs timeoffs20 (cost=0.00..37.62 rows=1,262 width=16) (actual rows= loops=)

41. 0.000 0.000 ↓ 0.0

Index Scan using ix3uh_usersuperstart on userhierarchy userhierarchy21 (cost=0.28..0.34 rows=2 width=24) (actual rows= loops=)

  • Index Cond: (userid = timeoffs20.userid)
42.          

SubPlan (for Nested Loop Left Join)

43. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.54..5.60 rows=1 width=0) (actual rows= loops=)

  • Join Filter: (timeoffapprovalnodes22.id = timeoffapprovalrequest23.nodeid)
44. 0.000 0.000 ↓ 0.0

Index Only Scan using uix2toaraidnid on timeoffapprovalrequest timeoffapprovalrequest23 (cost=0.27..2.29 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (approverid = 1,021)
45. 0.000 0.000 ↓ 0.0

Index Scan using ixtoantimeoffid on timeoffapprovalnodes timeoffapprovalnodes22 (cost=0.27..3.29 rows=2 width=16) (actual rows= loops=)

  • Index Cond: (timeoffid = timeoffs20.id)
46. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.54..4.59 rows=1 width=4) (actual rows= loops=)

47. 0.000 0.000 ↓ 0.0

Index Only Scan using uix2toaraidnid on timeoffapprovalrequest timeoffapprovalrequest23_1 (cost=0.27..2.29 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (approverid = 1,021)
48. 0.000 0.000 ↓ 0.0

Index Scan using timeoffapprovalnodes_pkey on timeoffapprovalnodes timeoffapprovalnodes22_1 (cost=0.27..2.29 rows=1 width=20) (actual rows= loops=)

  • Index Cond: (id = timeoffapprovalrequest23_1.nodeid)
49. 0.000 0.000 ↓ 0.0

Index Scan using ixtoahtimeoffid on timeoffapprovalhistory timeoffapprovalhistory24 (cost=0.28..2.78 rows=1 width=0) (actual rows= loops=)

  • Index Cond: (timeoffid = timeoffs20.id)
  • Filter: ((userid = 1,021) AND (action = ANY ('{2,3,4}'::integer[])))
50. 0.000 0.000 ↓ 0.0

Index Scan using ixtoahuserid on timeoffapprovalhistory timeoffapprovalhistory24_1 (cost=0.28..5.35 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (userid = 1,021)
  • Filter: (action = ANY ('{2,3,4}'::integer[]))
51. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.52..22.65 rows=1 width=32) (actual rows= loops=)

52. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.24..20.32 rows=6 width=84) (actual rows= loops=)

53. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.96..6.85 rows=1 width=4) (actual rows= loops=)

54. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.54..4.59 rows=1 width=20) (actual rows= loops=)

55. 0.000 0.000 ↓ 0.0

Index Scan using uix2tsar_nodeid_userid on tsapprovalrequest tsapprovalrequest28 (cost=0.27..2.29 rows=1 width=20) (actual rows= loops=)

  • Index Cond: (userid = 1,021)
56. 0.000 0.000 ↓ 0.0

Index Scan using timesheetapprovalnodes_pkey on timesheetapprovalnodes timesheetapprovalnodes27 (cost=0.27..2.29 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (id = tsapprovalrequest28.nodeid)
57. 0.000 0.000 ↓ 0.0

Index Scan using timesheet_pkey on timesheet timesheet26 (cost=0.42..2.08 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (id = timesheetapprovalnodes27.timesheetid)
  • Filter: ((timeoffs20.startdate <= enddate) AND (timeoffs20.enddate >= startdate) AND (userid = timeoffs20.userid))
58. 0.000 0.000 ↓ 0.0

Index Scan using ixtsarkvtsapprovalrequestid on tsapprovalrequestkeyvalue tsapprovalrequestkeyvalue25 (cost=0.28..13.35 rows=12 width=88) (actual rows= loops=)

  • Index Cond: (tsapprovalrequestid = tsapprovalrequest28.id)
  • Filter: (upper(key) = 'URN:REPLICON:APPROVAL-REQUEST-METADATA-KEY:ADDITIONAL-APPROVER-DATA-ACCESS-LEVELS'::text)
59. 0.000 0.000 ↓ 0.0

Index Scan using tsapprovalrequestkeyvalue_pkey on tsapprovalrequestkeyvalue tsapprovalrequestkeyvalue29 (cost=0.28..0.39 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (id = tsapprovalrequestkeyvalue25.parentid)
  • Filter: (parentid IS NULL)
60. 0.000 0.000 ↓ 0.0

Nested Loop (cost=3.89..152.53 rows=1 width=32) (actual rows= loops=)

61. 0.000 0.000 ↓ 0.0

Nested Loop (cost=3.46..152.00 rows=1 width=16) (actual rows= loops=)

62. 0.000 0.000 ↓ 0.0

Nested Loop (cost=3.02..149.13 rows=1 width=16) (actual rows= loops=)

63. 0.000 0.000 ↓ 0.0

Nested Loop (cost=2.58..148.60 rows=1 width=16) (actual rows= loops=)

64. 0.000 0.000 ↓ 0.0

Nested Loop (cost=2.15..147.54 rows=1 width=16) (actual rows= loops=)

65. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.72..146.40 rows=1 width=16) (actual rows= loops=)

66. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.28..144.20 rows=1 width=16) (actual rows= loops=)

67. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.84..129.13 rows=1 width=16) (actual rows= loops=)

68. 0.000 0.000 ↓ 0.0

Index Scan using ixtsuseridstartdateenddate on timesheet timesheet31 (cost=0.42..18.04 rows=17 width=16) (actual rows= loops=)

  • Index Cond: ((userid = timeoffs20.userid) AND (timeoffs20.enddate >= startdate) AND (timeoffs20.startdate <= enddate))
69. 0.000 0.000 ↓ 0.0

Index Scan using ixtah2timesheetid on timesheetapprovalhistory timesheetapprovalhistory32 (cost=0.42..6.52 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (timesheetid = timesheet31.id)
  • Filter: (userid = 1,021)
70. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvtimesheetapprovalhistoryid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue33 (cost=0.43..15.06 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (timesheetapprovalhistoryid = timesheetapprovalhistory32.id)
  • Filter: ((upper(key) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:REMOVED-APPROVAL-REQUEST-NODES'::text) AND (upper(uri) = 'URN:REPLICON-TENANT:D39C603BA5EE46DA9A42069EEC872CF2:USER:1,021'::text))
71. 0.000 0.000 ↓ 0.0

Index Scan using timesheetapprovalhistorykeyvalue_pkey on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue34 (cost=0.43..2.21 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (id = sheetapprovalhistorykeyvalue33.parentid)
  • Filter: (upper(uri) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:REMOVED-APPROVAL-REQUEST-EXPECTED-APPROVAL-AGENT-USER'::text)
72. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue35 (cost=0.43..1.12 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue34.parentid)
  • Filter: (upper(uri) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:REMOVED-APPROVAL-REQUEST-METADATA'::text)
73. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue36 (cost=0.43..1.05 rows=2 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue35.id)
74. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue37 (cost=0.43..0.51 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue36.id)
  • Filter: (upper(uri) = 'URN:REPLICON:APPROVAL-REQUEST-METADATA-KEY:ADDITIONAL-APPROVER-DATA-ACCESS-LEVELS'::text)
75. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue38 (cost=0.43..2.86 rows=2 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue37.id)
76. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue30 (cost=0.43..0.50 rows=2 width=92) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue38.id)
77. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.52..10.49 rows=1 width=32) (actual rows= loops=)

78. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.24..8.15 rows=1 width=84) (actual rows= loops=)

  • Join Filter: (tsapprovalrequest42.id = tsapprovalrequestkeyvalue39.tsapprovalrequestid)
79. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.96..6.85 rows=1 width=4) (actual rows= loops=)

80. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.54..4.59 rows=1 width=20) (actual rows= loops=)

81. 0.000 0.000 ↓ 0.0

Index Scan using uix2tsar_nodeid_userid on tsapprovalrequest tsapprovalrequest42 (cost=0.27..2.29 rows=1 width=20) (actual rows= loops=)

  • Index Cond: (userid = 1,021)
82. 0.000 0.000 ↓ 0.0

Index Scan using timesheetapprovalnodes_pkey on timesheetapprovalnodes timesheetapprovalnodes41 (cost=0.27..2.29 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (id = tsapprovalrequest42.nodeid)
83. 0.000 0.000 ↓ 0.0

Index Scan using timesheet_pkey on timesheet timesheet40 (cost=0.42..2.08 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (id = timesheetapprovalnodes41.timesheetid)
  • Filter: ((timeoffs20.startdate <= enddate) AND (timeoffs20.enddate >= startdate) AND (userid = timeoffs20.userid))
84. 0.000 0.000 ↓ 0.0

Index Scan using ixtsarkvkey on tsapprovalrequestkeyvalue tsapprovalrequestkeyvalue39 (cost=0.28..1.30 rows=1 width=88) (actual rows= loops=)

  • Index Cond: (upper(key) = 'URN:REPLICON:APPROVAL-REQUEST-METADATA-KEY:ADDITIONAL-APPROVER-ACCESSIBLE-OBJECTS'::text)
85. 0.000 0.000 ↓ 0.0

Index Scan using tsapprovalrequestkeyvalue_pkey on tsapprovalrequestkeyvalue tsapprovalrequestkeyvalue43 (cost=0.28..2.29 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (id = tsapprovalrequestkeyvalue39.parentid)
  • Filter: (parentid IS NULL)
86. 0.000 0.000 ↓ 0.0

Nested Loop (cost=3.89..153.13 rows=1 width=32) (actual rows= loops=)

87. 0.000 0.000 ↓ 0.0

Nested Loop (cost=3.46..152.61 rows=1 width=16) (actual rows= loops=)

88. 0.000 0.000 ↓ 0.0

Nested Loop (cost=3.02..149.13 rows=1 width=16) (actual rows= loops=)

89. 0.000 0.000 ↓ 0.0

Nested Loop (cost=2.58..148.60 rows=1 width=16) (actual rows= loops=)

90. 0.000 0.000 ↓ 0.0

Nested Loop (cost=2.15..147.54 rows=1 width=16) (actual rows= loops=)

91. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.72..146.40 rows=1 width=16) (actual rows= loops=)

92. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.28..144.20 rows=1 width=16) (actual rows= loops=)

93. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.84..129.13 rows=1 width=16) (actual rows= loops=)

94. 0.000 0.000 ↓ 0.0

Index Scan using ixtsuseridstartdateenddate on timesheet timesheet45 (cost=0.42..18.04 rows=17 width=16) (actual rows= loops=)

  • Index Cond: ((userid = timeoffs20.userid) AND (timeoffs20.enddate >= startdate) AND (timeoffs20.startdate <= enddate))
95. 0.000 0.000 ↓ 0.0

Index Scan using ixtah2timesheetid on timesheetapprovalhistory timesheetapprovalhistory46 (cost=0.42..6.52 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (timesheetid = timesheet45.id)
  • Filter: (userid = 1,021)
96. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvtimesheetapprovalhistoryid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue47 (cost=0.43..15.06 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (timesheetapprovalhistoryid = timesheetapprovalhistory46.id)
  • Filter: ((upper(key) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:REMOVED-APPROVAL-REQUEST-NODES'::text) AND (upper(uri) = 'URN:REPLICON-TENANT:D39C603BA5EE46DA9A42069EEC872CF2:USER:1,021'::text))
97. 0.000 0.000 ↓ 0.0

Index Scan using timesheetapprovalhistorykeyvalue_pkey on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue48 (cost=0.43..2.21 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (id = sheetapprovalhistorykeyvalue47.parentid)
  • Filter: (upper(uri) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:REMOVED-APPROVAL-REQUEST-EXPECTED-APPROVAL-AGENT-USER'::text)
98. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue49 (cost=0.43..1.12 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue48.parentid)
  • Filter: (upper(uri) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:REMOVED-APPROVAL-REQUEST-METADATA'::text)
99. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue50 (cost=0.43..1.05 rows=2 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue49.id)
100. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue51 (cost=0.43..0.51 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue50.id)
  • Filter: (upper(uri) = 'URN:REPLICON:APPROVAL-REQUEST-METADATA-KEY:ADDITIONAL-APPROVER-ACCESSIBLE-OBJECTS'::text)
101. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue52 (cost=0.43..3.46 rows=2 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue51.id)
102. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue44 (cost=0.43..0.50 rows=2 width=92) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue52.id)
103. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 2 (cost=507,445.32..507,538.34 rows=104 width=72) (actual rows= loops=)

  • Filter: ((hashed SubPlan 2) OR (hashed SubPlan 11))
104. 0.000 0.000 ↓ 0.0

Merge Join (cost=0.56..91.50 rows=138 width=140) (actual rows= loops=)

  • Merge Cond: (toe.timeoffid = toff.id)
105. 0.000 0.000 ↓ 0.0

Index Scan using uix2toe_timeoffidentrydate on timeoffentries toe (cost=0.28..39.78 rows=138 width=24) (actual rows= loops=)

  • Index Cond: ((entrydate >= '2020-07-25'::date) AND (entrydate <= '2020-07-31'::date))
106. 0.000 0.000 ↓ 0.0

Index Scan using timeoffs_pkey on timeoffs toff (cost=0.28..50.21 rows=1,262 width=8) (actual rows= loops=)

107. 0.000 0.000 ↓ 0.0

Sort (cost=443,306.19..446,996.62 rows=1,476,175 width=78) (actual rows= loops=)

  • Sort Key: timeentrymetadata10.timeentryid
108. 0.000 0.000 ↓ 0.0

Seq Scan on timeentrymetadata timeentrymetadata10 (cost=0.00..292,046.72 rows=1,476,175 width=78) (actual rows= loops=)

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

Index Scan using ixtemtimeentryid on timeentrymetadata timeentrymetadata12 (cost=0.43..385,944.73 rows=1,876,155 width=78) (actual rows= loops=)

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

Hash (cost=80.92..80.92 rows=3,776 width=4) (actual rows= loops=)

111. 0.000 0.000 ↓ 0.0

Index Only Scan using project_pkey on project project11 (cost=0.28..80.92 rows=3,776 width=4) (actual rows= loops=)

112. 0.000 0.000 ↓ 0.0

Hash (cost=3,103.96..3,103.96 rows=108,396 width=8) (actual rows= loops=)

113. 0.000 0.000 ↓ 0.0

Seq Scan on task task13 (cost=0.00..3,103.96 rows=108,396 width=8) (actual rows= loops=)

114. 0.000 0.000 ↓ 0.0

Hash (cost=313.76..313.76 rows=3,776 width=65) (actual rows= loops=)

115. 0.000 0.000 ↓ 0.0

Seq Scan on project pj (cost=0.00..313.76 rows=3,776 width=65) (actual rows= loops=)

116. 0.000 0.000 ↓ 0.0

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

  • Index Cond: ((userid = "*SELECT* 1".userid) AND ("*SELECT* 1".entrydate >= startdate) AND ("*SELECT* 1".entrydate <= enddate))
117. 0.000 0.000 ↓ 0.0

Hash (cost=31,766.01..31,766.01 rows=173,310 width=20) (actual rows= loops=)

118. 0.000 0.000 ↓ 0.0

Seq Scan on dm_timesheetlist_facts tslist (cost=0.00..31,766.01 rows=173,310 width=20) (actual rows= loops=)

  • Filter: (timesheetstatus = ANY ('{0,1,2,3,4}'::integer[]))
119. 0.000 0.000 ↓ 0.0

Hash (cost=5,388.35..5,388.35 rows=108,396 width=30) (actual rows= loops=)

120. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2.44..5,388.35 rows=108,396 width=30) (actual rows= loops=)

  • Hash Cond: (tk.estimatedcostcurrencyid = exchangerate.fixedcurrencyid)
121. 0.000 0.000 ↓ 0.0

Seq Scan on task tk (cost=0.00..3,103.96 rows=108,396 width=34) (actual rows= loops=)

122. 0.000 0.000 ↓ 0.0

Hash (cost=2.35..2.35 rows=7 width=4) (actual rows= loops=)

123. 0.000 0.000 ↓ 0.0

Seq Scan on exchangerate (cost=0.00..2.35 rows=7 width=4) (actual rows= loops=)

  • Filter: ((variablecurrencyid = $0) AND (('now'::cstring)::date >= effectivedate) AND (('now'::cstring)::date <= enddate))
124. 0.000 0.000 ↓ 0.0

Hash (cost=54.47..54.47 rows=1,047 width=40) (actual rows= loops=)

125. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo ui (cost=0.00..54.47 rows=1,047 width=40) (actual rows= loops=)

126. 0.000 0.000 ↓ 0.0

Hash (cost=218.10..218.10 rows=336 width=4) (actual rows= loops=)

127. 0.000 0.000 ↓ 0.0

Index Scan using ixprjprojectleaderapproverid on project project17 (cost=0.28..218.10 rows=336 width=4) (actual rows= loops=)

  • Index Cond: (projectleaderapproverid = 1,021)
128. 0.000 0.000 ↓ 0.0

Hash (cost=68.77..68.77 rows=1,029 width=533) (actual rows= loops=)

129. 0.000 0.000 ↓ 0.0

Hash Join (cost=46.84..68.77 rows=1,029 width=533) (actual rows= loops=)

  • Hash Cond: (du.departmentid = dep.id)
130. 0.000 0.000 ↓ 0.0

Hash Join (cost=44.67..63.67 rows=1,029 width=21) (actual rows= loops=)

  • Hash Cond: (du.userid = login.userid)
131. 0.000 0.000 ↓ 0.0

Seq Scan on departmentusers du (cost=0.00..16.29 rows=1,029 width=8) (actual rows= loops=)

132. 0.000 0.000 ↓ 0.0

Hash (cost=31.52..31.52 rows=1,052 width=13) (actual rows= loops=)

133. 0.000 0.000 ↓ 0.0

Seq Scan on login (cost=0.00..31.52 rows=1,052 width=13) (actual rows= loops=)

134. 0.000 0.000 ↓ 0.0

Hash (cost=1.52..1.52 rows=52 width=520) (actual rows= loops=)

135. 0.000 0.000 ↓ 0.0

Seq Scan on departments dep (cost=0.00..1.52 rows=52 width=520) (actual rows= loops=)

136. 0.000 0.000 ↓ 0.0

Hash (cost=4,367.17..4,367.17 rows=108,417 width=62) (actual rows= loops=)

137. 0.000 0.000 ↓ 0.0

Seq Scan on taskdenormalizedhierarchy tdh (cost=0.00..4,367.17 rows=108,417 width=62) (actual rows= loops=)

138. 0.000 0.000 ↓ 0.0

Hash (cost=292,046.72..292,046.72 rows=916,031 width=60) (actual rows= loops=)

139. 0.000 0.000 ↓ 0.0

Seq Scan on timeentrymetadata timeentrymetadata8 (cost=0.00..292,046.72 rows=916,031 width=60) (actual rows= loops=)

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

Hash (cost=7.95..7.95 rows=395 width=41) (actual rows= loops=)

141. 0.000 0.000 ↓ 0.0

Seq Scan on billingrate billingrate9 (cost=0.00..7.95 rows=395 width=41) (actual rows= loops=)

142. 0.000 0.000 ↓ 0.0

Hash (cost=323.20..323.20 rows=640 width=4) (actual rows= loops=)

143. 0.000 0.000 ↓ 0.0

Seq Scan on project project18 (cost=0.00..323.20 rows=640 width=4) (actual rows= loops=)

  • Filter: (projectstatuslabelid = 'f6918709-d5cf-436b-b0ff-2191cd2dd6a9'::uuid)