explain.depesz.com

PostgreSQL's explain analyze made readable

Result: ZOaR

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

Sort (cost=1,023,027.50..1,023,027.51 rows=2 width=3,391) (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", dmv_timesheetday_facts39.userduplicatename5, ((login.loginname)::character varying(255)) COLLATE "en_US", ((ui.displayname)::text) COLLATE "en_US", ((dep.name)::character varying(255)) COLLATE "en_US", dmv_timesheetday_facts39.entrydate3, dmv_timesheetday_facts39.timesheetenddate6, dmv_timesheetday_facts39.timesheetstatus7, dmv_timesheetday_facts39.comments4 COLLATE "en_US", ((userinfo42.displayname)::text) COLLATE "en_US", ((br.name)::character varying(50)) COLLATE "en_US", ((tdh.hierarchysorting)::text) COLLATE "en_US", ((tdh.hierarchytaskname)::text) COLLATE "en_US
2.          

CTE dmv_timesheetday_facts0cte

3. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=1,022,932.07..1,022,932.16 rows=2 width=137) (actual rows= loops=)

  • Group Key: ts.userid, at.entrydate, (upper(at.comments)), ui_1.duplicatename, ts_1.enddate, tslist.timesheetstatus, at.projectid, at.taskid, at.id
4. 0.000 0.000 ↓ 0.0

Sort (cost=1,022,932.07..1,022,932.07 rows=2 width=149) (actual rows= loops=)

  • Sort Key: ts.userid, at.entrydate, (upper(at.comments)), ui_1.duplicatename, ts_1.enddate, tslist.timesheetstatus, at.projectid, at.taskid, at.id
5. 0.000 0.000 ↓ 0.0

Nested Loop (cost=964.60..1,022,932.06 rows=2 width=149) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Nested Loop (cost=964.17..1,022,814.83 rows=2 width=117) (actual rows= loops=)

  • Join Filter: (at.timesheetid = ts.id)
7. 0.000 0.000 ↓ 0.0

Hash Join (cost=962.91..1,017,057.46 rows=129,403 width=120) (actual rows= loops=)

  • Hash Cond: (at.projectid = project4.id)
8. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=786.11..995,593.87 rows=1,685,609 width=628) (actual rows= loops=)

  • Hash Cond: (at.projectid = pj_1.id)
  • Join Filter: ((at.entrydate >= pc.effectivedate) AND (at.entrydate <= pc.enddate))
9. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=317.51..86,860.68 rows=1,685,609 width=125) (actual rows= loops=)

  • Hash Cond: ((at.projectid = pj_2.id) AND (at.userspecifiedclientid = pc_1.clientid))
  • Join Filter: ((at.entrydate >= pc_1.effectivedate) AND (at.entrydate <= pc_1.enddate))
10. 0.000 0.000 ↓ 0.0

Seq Scan on dm_attendancetimeallocation_facts at (cost=0.00..73,901.09 rows=1,685,609 width=129) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Hash (cost=317.49..317.49 rows=1 width=16) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.28..317.49 rows=1 width=16) (actual rows= loops=)

13. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_2 (cost=0.00..315.19 rows=1 width=4) (actual rows= loops=)

  • Filter: (clientbillingallocationmethod = 1)
14. 0.000 0.000 ↓ 0.0

Index Only Scan using uix4pc_projectclienteffectiveend on projectclient pc_1 (cost=0.28..2.30 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (projectid = pj_2.id)
15. 0.000 0.000 ↓ 0.0

Hash (cost=429.14..429.14 rows=3,157 width=44) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Hash Join (cost=354.38..429.14 rows=3,157 width=44) (actual rows= loops=)

  • Hash Cond: (pc.projectid = pj_1.id)
17. 0.000 0.000 ↓ 0.0

Seq Scan on projectclient pc (cost=0.00..66.46 rows=3,157 width=44) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

Hash (cost=315.19..315.19 rows=3,135 width=4) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_1 (cost=0.00..315.19 rows=3,135 width=4) (actual rows= loops=)

  • Filter: (clientbillingallocationmethod = 0)
20. 0.000 0.000 ↓ 0.0

Hash (cost=173.79..173.79 rows=241 width=4) (actual rows= loops=)

21. 0.000 0.000 ↓ 0.0

Index Scan using ixprjprojectleaderapproverid on project project4 (cost=0.28..173.79 rows=241 width=4) (actual rows= loops=)

  • Index Cond: (projectleaderapproverid = 507)
22. 0.000 0.000 ↓ 0.0

Materialize (cost=1.26..1,875.29 rows=2 width=61) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.26..1,875.28 rows=2 width=61) (actual rows= loops=)

  • Join Filter: (ts.id = ts_1.id)
24. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.84..1,874.35 rows=2 width=41) (actual rows= loops=)

25. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.42..1,869.47 rows=2 width=21) (actual rows= loops=)

26. 0.000 0.000 ↓ 0.0

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

27. 0.000 0.000 ↓ 0.0

Index Scan using uix2tsuseridstartdate on timesheet ts (cost=0.42..1.72 rows=1 width=20) (actual rows= loops=)

  • Index Cond: ((userid = ui_1.id) AND (startdate >= '2020-06-01'::date) AND (startdate <= '2020-06-19'::date))
  • Filter: ((enddate >= '2020-06-01'::date) AND (enddate <= '2020-06-19'::date))
28. 0.000 0.000 ↓ 0.0

Index Scan using ixdtslsftimesheetid on dm_timesheetlist_facts tslist (cost=0.42..2.44 rows=1 width=20) (actual rows= loops=)

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

Index Scan using timesheet_pkey on timesheet ts_1 (cost=0.42..0.45 rows=1 width=20) (actual rows= loops=)

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

Index Scan using dm_attendancetimeallocation_facts_pkey on dm_attendancetimeallocation_facts ttendancetimeallocation_facts5 (cost=0.43..58.61 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (id = at.id)
  • Filter: ((userid = 507) OR (alternatives: SubPlan 1 or hashed SubPlan 2) OR (alternatives: SubPlan 3 or hashed SubPlan 4) OR (SubPlan 5) OR (SubPlan 6) OR (SubPlan 7) OR (SubPlan 8))
31.          

SubPlan (for Index Scan)

32. 0.000 0.000 ↓ 0.0

Index Scan using ixuhsupervisorid on userhierarchy userhierarchy6 (cost=0.28..2.31 rows=1 width=0) (actual rows= loops=)

  • Index Cond: (supervisorid = 507)
  • Filter: ((startdate <= '2020-06-25'::date) AND (enddate >= '2020-06-25'::date) AND (userid = ttendancetimeallocation_facts5.userid))
33. 0.000 0.000 ↓ 0.0

Index Scan using ixuhsupervisorid on userhierarchy userhierarchy6_1 (cost=0.28..2.30 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (supervisorid = 507)
  • Filter: ((startdate <= '2020-06-25'::date) AND (enddate >= '2020-06-25'::date))
34. 0.000 0.000 ↓ 0.0

Index Scan using project_pkey on project project7 (cost=0.28..2.30 rows=1 width=0) (actual rows= loops=)

  • Index Cond: (id = ttendancetimeallocation_facts5.projectid)
  • Filter: (projectleaderapproverid = 507)
35. 0.000 0.000 ↓ 0.0

Index Scan using ixprjprojectleaderapproverid on project project7_1 (cost=0.28..173.79 rows=241 width=4) (actual rows= loops=)

  • Index Cond: (projectleaderapproverid = 507)
36. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.71..11.68 rows=1 width=32) (actual rows= loops=)

37. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.57..10.98 rows=1 width=84) (actual rows= loops=)

  • Join Filter: (tsapprovalrequest11.id = tsapprovalrequestkeyvalue8.tsapprovalrequestid)
38. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.57..5.67 rows=1 width=4) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.15..3.22 rows=1 width=20) (actual rows= loops=)

  • Join Filter: (timesheetapprovalnodes10.id = tsapprovalrequest11.nodeid)
40. 0.000 0.000 ↓ 0.0

Index Scan using uix2tsar_nodeid_userid on tsapprovalrequest tsapprovalrequest11 (cost=0.15..2.17 rows=1 width=20) (actual rows= loops=)

  • Index Cond: (userid = 507)
41. 0.000 0.000 ↓ 0.0

Seq Scan on timesheetapprovalnodes timesheetapprovalnodes10 (cost=0.00..1.02 rows=2 width=32) (actual rows= loops=)

  • Filter: (timesheetid = ttendancetimeallocation_facts5.timesheetid)
42. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (id = ttendancetimeallocation_facts5.timesheetid)
43. 0.000 0.000 ↓ 0.0

Seq Scan on tsapprovalrequestkeyvalue tsapprovalrequestkeyvalue8 (cost=0.00..4.26 rows=84 width=88) (actual rows= loops=)

  • Filter: (upper(key) = 'URN:REPLICON:APPROVAL-REQUEST-METADATA-KEY:ADDITIONAL-APPROVER-DATA-ACCESS-LEVELS'::text)
44. 0.000 0.000 ↓ 0.0

Index Scan using tsapprovalrequestkeyvalue_pkey on tsapprovalrequestkeyvalue tsapprovalrequestkeyvalue12 (cost=0.14..0.59 rows=1 width=16) (actual rows= loops=)

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

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

46. 0.000 0.000 ↓ 0.0

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

47. 0.000 0.000 ↓ 0.0

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

48. 0.000 0.000 ↓ 0.0

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

49. 0.000 0.000 ↓ 0.0

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

50. 0.000 0.000 ↓ 0.0

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

51. 0.000 0.000 ↓ 0.0

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

52. 0.000 0.000 ↓ 0.0

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

53. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (id = ttendancetimeallocation_facts5.timesheetid)
54. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (timesheetid = ttendancetimeallocation_facts5.timesheetid)
  • Filter: (userid = 507)
55. 0.000 0.000 ↓ 0.0

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

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

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

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

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

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

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

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue18.id)
59. 0.000 0.000 ↓ 0.0

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

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

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

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue20.id)
61. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue21.id)
62. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.98..10.63 rows=1 width=32) (actual rows= loops=)

63. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.84..7.96 rows=1 width=84) (actual rows= loops=)

  • Join Filter: (tsapprovalrequest25.id = tsapprovalrequestkeyvalue22.tsapprovalrequestid)
64. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.57..5.67 rows=1 width=4) (actual rows= loops=)

65. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.15..3.22 rows=1 width=20) (actual rows= loops=)

  • Join Filter: (timesheetapprovalnodes24.id = tsapprovalrequest25.nodeid)
66. 0.000 0.000 ↓ 0.0

Index Scan using uix2tsar_nodeid_userid on tsapprovalrequest tsapprovalrequest25 (cost=0.15..2.17 rows=1 width=20) (actual rows= loops=)

  • Index Cond: (userid = 507)
67. 0.000 0.000 ↓ 0.0

Seq Scan on timesheetapprovalnodes timesheetapprovalnodes24 (cost=0.00..1.02 rows=2 width=32) (actual rows= loops=)

  • Filter: (timesheetid = ttendancetimeallocation_facts5.timesheetid)
68. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (id = ttendancetimeallocation_facts5.timesheetid)
69. 0.000 0.000 ↓ 0.0

Index Scan using ixtsarkvkey on tsapprovalrequestkeyvalue tsapprovalrequestkeyvalue22 (cost=0.27..2.28 rows=1 width=88) (actual rows= loops=)

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

Index Scan using tsapprovalrequestkeyvalue_pkey on tsapprovalrequestkeyvalue tsapprovalrequestkeyvalue26 (cost=0.14..2.16 rows=1 width=16) (actual rows= loops=)

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

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

72. 0.000 0.000 ↓ 0.0

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

73. 0.000 0.000 ↓ 0.0

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

74. 0.000 0.000 ↓ 0.0

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

75. 0.000 0.000 ↓ 0.0

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

76. 0.000 0.000 ↓ 0.0

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

77. 0.000 0.000 ↓ 0.0

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

78. 0.000 0.000 ↓ 0.0

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

79. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (id = ttendancetimeallocation_facts5.timesheetid)
80. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (timesheetid = ttendancetimeallocation_facts5.timesheetid)
  • Filter: (userid = 507)
81. 0.000 0.000 ↓ 0.0

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

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

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

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

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

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

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

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue32.id)
85. 0.000 0.000 ↓ 0.0

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

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

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

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue34.id)
87. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue35.id)
88.          

Initplan (for Sort)

89. 0.000 0.000 ↓ 0.0

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

90. 0.000 0.000 ↓ 0.0

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

91. 0.000 0.000 ↓ 0.0

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

92. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=19.75..61.33 rows=2 width=3,391) (actual rows= loops=)

93. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=19.46..60.63 rows=2 width=775) (actual rows= loops=)

94. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=19.18..60.01 rows=2 width=765) (actual rows= loops=)

95. 0.000 0.000 ↓ 0.0

Hash Join (cost=17.36..49.41 rows=2 width=756) (actual rows= loops=)

  • Hash Cond: (du.userid = dmv_timesheetday_facts39.userid2)
96. 0.000 0.000 ↓ 0.0

Hash Join (cost=2.45..31.32 rows=844 width=520) (actual rows= loops=)

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

Index Only Scan using departmentusers_pkey on departmentusers du (cost=0.28..26.75 rows=844 width=8) (actual rows= loops=)

  • Index Cond: (departmentid = ANY ('{15,40,39,55,18,53,51,54,47,49,11,13,50,6,10,30,35,32,25,27,29,23,34,36,41}'::integer[]))
98. 0.000 0.000 ↓ 0.0

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

99. 0.000 0.000 ↓ 0.0

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

100. 0.000 0.000 ↓ 0.0

Hash (cost=14.88..14.88 rows=2 width=244) (actual rows= loops=)

101. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.27..14.88 rows=2 width=244) (actual rows= loops=)

  • Join Filter: (dmv_timesheetday_facts39.userid2 = login.userid)
102. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.00..14.22 rows=2 width=231) (actual rows= loops=)

103. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.72..9.63 rows=2 width=192) (actual rows= loops=)

104. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.57..9.26 rows=2 width=196) (actual rows= loops=)

105. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.28..4.64 rows=2 width=166) (actual rows= loops=)

106. 0.000 0.000 ↓ 0.0

CTE Scan on dmv_timesheetday_facts0cte dmv_timesheetday_facts39 (cost=0.00..0.04 rows=2 width=105) (actual rows= loops=)

107. 0.000 0.000 ↓ 0.0

Index Scan using project_pkey on project pj (cost=0.28..2.30 rows=1 width=65) (actual rows= loops=)

  • Index Cond: (dmv_timesheetday_facts39.projectid8 = id)
108. 0.000 0.000 ↓ 0.0

Index Scan using task_pkey on task tk (cost=0.29..2.31 rows=1 width=34) (actual rows= loops=)

  • Index Cond: (dmv_timesheetday_facts39.taskid9 = id)
109. 0.000 0.000 ↓ 0.0

Index Scan using uix3er_currencyideffectivedate on exchangerate (cost=0.14..0.18 rows=1 width=4) (actual rows= loops=)

  • Index Cond: ((variablecurrencyid = $34) AND (tk.estimatedcostcurrencyid = fixedcurrencyid) AND (('now'::cstring)::date >= effectivedate))
  • Filter: (('now'::cstring)::date <= enddate)
110. 0.000 0.000 ↓ 0.0

Index Scan using userinfo_pkey on userinfo ui (cost=0.28..2.29 rows=1 width=39) (actual rows= loops=)

  • Index Cond: (id = dmv_timesheetday_facts39.userid2)
111. 0.000 0.000 ↓ 0.0

Index Scan using login_pkey on login (cost=0.28..0.32 rows=1 width=13) (actual rows= loops=)

  • Index Cond: (userid = ui.id)
112. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.82..4.93 rows=37 width=41) (actual rows= loops=)

113. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.41..3.53 rows=1 width=49) (actual rows= loops=)

  • Join Filter: ((dm_attendancetimeallocation_facts.entrydate >= pbrh.effectivedate) AND (dm_attendancetimeallocation_facts.entrydate <= pbrh.enddate))
114. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.11..3.19 rows=1 width=65) (actual rows= loops=)

115. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.70..2.74 rows=1 width=85) (actual rows= loops=)

116. 0.000 0.000 ↓ 0.0

Index Scan using dm_attendancetimeallocation_facts_pkey on dm_attendancetimeallocation_facts (cost=0.43..2.45 rows=1 width=44) (actual rows= loops=)

  • Index Cond: (dmv_timesheetday_facts39.timeallocationid10 = id)
117. 0.000 0.000 ↓ 0.0

Index Scan using billingrate_pkey on billingrate br (cost=0.27..0.29 rows=1 width=41) (actual rows= loops=)

  • Index Cond: (id = dm_attendancetimeallocation_facts.billingrateid)
118. 0.000 0.000 ↓ 0.0

Index Scan using ixpbr2projectid on projectbillingrate pbr (cost=0.41..0.44 rows=1 width=40) (actual rows= loops=)

  • Index Cond: ((projectid = dm_attendancetimeallocation_facts.projectid) AND (billingrateid = dm_attendancetimeallocation_facts.billingrateid))
  • Filter: (((billingrateid = $35) AND (dm_attendancetimeallocation_facts.userid = userid)) OR ((billingrateid <> $36) AND (userid IS NULL)))
119. 0.000 0.000 ↓ 0.0

Index Scan using ixpbrhprojectbillingrateid on projectbillingratehistory pbrh (cost=0.29..0.33 rows=1 width=24) (actual rows= loops=)

  • Index Cond: (projectbillingrateid = pbr.id)
120. 0.000 0.000 ↓ 0.0

Index Only Scan using ixtsuseridstartdateenddate on timesheet dmvts (cost=0.42..1.23 rows=17 width=12) (actual rows= loops=)

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

Index Scan using userinfo_pkey on userinfo userinfo42 (cost=0.28..0.31 rows=1 width=18) (actual rows= loops=)

  • Index Cond: (pj.projectleaderapproverid = id)
122. 0.000 0.000 ↓ 0.0

Index Scan using taskdenormalizedhierarchy_pkey on taskdenormalizedhierarchy tdh (cost=0.29..0.35 rows=1 width=63) (actual rows= loops=)

  • Index Cond: (tk.id = taskid)