explain.depesz.com

PostgreSQL's explain analyze made readable

Result: 2AFxM

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

Sort (cost=7,927,403,005.92..7,927,862,080.69 rows=183,629,908 width=22,815) (actual rows= loops=)

  • Sort Key: ((login.loginname)::character varying(255)) COLLATE "en_US", ((ui.lastname)::character varying(50)) COLLATE "en_US", ((ui.firstname)::character varying(50)) COLLATE "en_US", ui.duplicatename, ((ui.displayname)::text) COLLATE "en_US", ((pj.name)::character varying(255)) COLLATE "en_US", ((pj.info2)::character varying(255)) COLLATE "en_US", ((tk.info2)::character varying(255)) COLLATE "en_US", ((pj.info5)::character varying(255)) COLLATE "en_US", ((pj.code)::character varying(50)) COLLATE "en_US", ((tk.code)::character varying(50)) COLLATE "en_US", ((date_part('year'::text, (at_2.entrydate)::timestamp without time zone))::integer), ((date_part('quarter'::text, (at_2.entrydate)::timestamp without time zone))::integer), ((date_part('month'::text, (at_2.entrydate)::timestamp without time zone))::integer), ((date_part('year'::text, ta.timestamputc))::integer), ((date_part('quarter'::text, ta.timestamputc))::integer), ((date_part('month'::text, ta.timestamputc))::integer), (CASE WHEN ui.disabled THEN 0 ELSE 1 END), ta.timestamputc, ((dep.name)::character varying(255)) COLLATE "en_US", tslist.timesheetstatus, ((pj.info11)::character varying(255)) COLLATE "en_US", ((pj.info12)::character varying(255)) COLLATE "en_US", projectstatuslabel8.projectstatustype, ((ui.info8)::character varying(255)) COLLATE "en_US", ((ui.info7)::character varying(255)) COLLATE "en_US", ((ui.info2)::character varying(255)) COLLATE "en_US", ts_1.startdate, ts_1.enddate, ((date_part('year'::text, (ts_1.startdate)::timestamp without time zone))::integer), ((date_part('quarter'::text, (ts_1.startdate)::timestamp without time zone))::integer), ((date_part('month'::text, (ts_1.startdate)::timestamp without time zone))::integer), ((date_part('week'::text, (ts_1.startdate)::timestamp without time zone))::integer), ((date_part('week'::text, ta.timestamputc))::integer), ((reportperiod9.info1)::character varying(255)) COLLATE "en_US", tah.timestamputc, ((tah.approvalcomments)::text) COLLATE "en_US", ta_1.attestationstatus, tar.fromtimestamputc, ((ui.email)::character varying(255)) COLLATE "en_US", ui.startdate, ui.enddate, ((userinfo17.displayname)::text) COLLATE "en_US", ((userinfo17.email)::character varying(255)) COLLATE "en_US", ((dep.code)::character varying(50)) COLLATE "en_US", ((array_to_string((SubPlan 1), ' / '::text))::text) COLLATE "en_US", ((act.name)::character varying(50)) COLLATE "en_US", ((act.code)::character varying(50)) COLLATE "en_US", ((ui.externalid)::character varying(255)) COLLATE "en_US", ((employeetype20.name)::character varying(50)) COLLATE "en_US", touc.workweekstartday, ((currencyinfo22.symbol)::character varying(50)) COLLATE "en_US", uprrh.hourlyrate, ((currencyinfo24.symbol)::character varying(50)) COLLATE "en_US", ((uprrh.hourlyrate * exchangerate_1.exchangevalue)), ((ui.info1)::character varying(255)) COLLATE "en_US", ((ui.info4)::character varying(255)) COLLATE "en_US", pj.costtype, ((userinfo26.displayname)::text) COLLATE "en_US", ((userinfo26.email)::character varying(255)) COLLATE "en_US", pj.startdate, pj.enddate, ((pj.description)::character varying(255)) COLLATE "en_US", ((SubPlan 2)), ((SubPlan 3)), ((pj.info1)::character varying(255)) COLLATE "en_US", ((pj.info3)::character varying(255)) COLLATE "en_US", ((pj.info6)::character varying(255)) COLLATE "en_US", ((pj.info8)::character varying(255)) COLLATE "en_US", ((pj.info10)::character varying(255)) COLLATE "en_US", ((departmentgroup32.code)::character varying(50)) COLLATE "en_US", ((departmentgroup32.name)::character varying(100)) COLLATE "en_US", ((ntgroupdenormalizedhierarchy33.fullpath)::text) COLLATE "en_US", ((employeetypegroup34.code)::character varying(50)) COLLATE "en_US", ((employeetypegroup34.name)::character varying(100)) COLLATE "en_US", ((pegroupdenormalizedhierarchy35.fullpath)::text) COLLATE "en_US", ((program.name)::character varying(255)) COLLATE "en_US", ((userinfo38.displayname)::text) COLLATE "en_US", program.startdate, program.enddate, (CASE WHEN program.archived THEN 1 ELSE 0 END), ((tk.name)::character varying(255)) COLLATE "en_US", ((tdh_1.hierarchysorting)::text) COLLATE "en_US", ((tdh_1.hierarchytaskname)::text) COLLATE "en_US", tk.timeentrystartdate, (CASE WHEN tdh.effectivelyenabled THEN 0 ELSE 1 END), tk.timeentryenddate, (COALESCE(tk.costtype, (SubPlan 4))), ((tk.description)::character varying(255)) COLLATE "en_US", ((SubPlan 5)), ((SubPlan 6)), ((tk.info3)::character varying(255)) COLLATE "en_US", ((tk.info5)::character varying(255)) COLLATE "en_US", ((tk.info6)::character varying(255)) COLLATE "en_US", ((to_timestamp((tk.info20)::text, 'YYYY/MM/DD'::text))::timestamp without time zone), ((date_part('year'::text, (to_timestamp((tk.info20)::text, 'YYYY/MM/DD'::text))::timestamp without time zone))::integer), ((date_part('quarter'::text, (to_timestamp((tk.info20)::text, 'YYYY/MM/DD'::text))::timestamp without time zone))::integer), ((date_part('month'::text, (to_timestamp((tk.info20)::text, 'YYYY/MM/DD'::text))::timestamp without time zone))::integer), ((date_part('week'::text, (to_timestamp((tk.info20)::text, 'YYYY/MM/DD'::text))::timestamp without time zone))::integer), (((date_part('dow'::text, (to_timestamp((tk.info20)::text, 'YYYY/MM/DD'::text))::timestamp without time zone) + '1'::double precision))::integer), ((activities44.name)::character varying(50)) COLLATE "en_US", ((activities44.code)::character varying(50)) COLLATE "en_US", ((activities44.description)::character varying(255)) COLLATE "en_US", at_2.entrydate, ((date_part('week'::text, (at_2.entrydate)::timestamp without time zone))::integer), ((at_2.comments)::text) COLLATE "en_US", (COALESCE(ucnf.unclassifiedfactor, '1'::numeric)), (COALESCE(ucnf.capexfactor, '1'::numeric)), uprrh_1.effectivedate, ((currencyinfo49.symbol)::character varying(50)) COLLATE "en_US", uprrh_1.hourlyrate, uprrh_1.currencyid, ((timeoffcode50.name)::character varying(255)) COLLATE "en_US", ts_1.id, ui.id, userhierarchy53.supervisorid, uprrh.currencyid, uprh.currencyid, ubrh.currencyid, employeetype20.id, at_2.id, at_2.timeoffcodeid, ((ui.info6)::character varying(255)) COLLATE "en_US", cl.id, pj.id, currencyinfo49.id, currencyinfo57.id, activities44.id, tk.id, tk.estimatedcostcurrencyid
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

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

5. 0.000 0.000 ↓ 0.0

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

6. 0.000 0.000 ↓ 0.0

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

7. 0.000 0.000 ↓ 0.0

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

8. 0.000 0.000 ↓ 0.0

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

9. 0.000 0.000 ↓ 0.0

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

10. 0.000 0.000 ↓ 0.0

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

11. 0.000 0.000 ↓ 0.0

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

12. 0.000 0.000 ↓ 0.0

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

13. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=10,298,515.58..1,758,486,167.32 rows=183,629,908 width=22,815) (actual rows= loops=)

  • Hash Cond: (at_2.id = dm_attendancetimeallocation_facts.id)
14. 0.000 0.000 ↓ 0.0

Hash Join (cost=10,250,213.32..16,768,009.20 rows=183,629,908 width=4,293) (actual rows= loops=)

  • Hash Cond: (ts.userid = uprh.userid)
15. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=10,250,094.88..14,242,979.64 rows=183,629,900 width=4,313) (actual rows= loops=)

  • Hash Cond: ((CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.clientid ELSE at_2.userspecifiedclientid END) = cl.id)
16. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=10,250,092.73..13,750,734.58 rows=183,629,900 width=4,309) (actual rows= loops=)

  • Hash Cond: (_userworkscheduleintimesheet52.timesheetid = ts.id)
17. 0.000 0.000 ↓ 0.0

Subquery Scan on _userworkscheduleintimesheet52 (cost=3,044,314.30..3,847,211.20 rows=11,074,440 width=80) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=3,044,314.30..3,736,466.80 rows=11,074,440 width=92) (actual rows= loops=)

  • Group Key: t.id, uwsf.userid
19. 0.000 0.000 ↓ 0.0

Sort (cost=3,044,314.30..3,072,000.40 rows=11,074,440 width=68) (actual rows= loops=)

  • Sort Key: t.id, uwsf.userid
20. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=796,456.98..969,890.37 rows=11,074,440 width=68) (actual rows= loops=)

  • Hash Cond: ((cd.calendarid = c.id) AND ((cd.dateinfo)::date = uwsf.date))
21. 0.000 0.000 ↓ 0.0

Seq Scan on calendardetail cd (cost=0.00..32.96 rows=1,796 width=12) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Hash (cost=500,561.38..500,561.38 rows=11,074,440 width=68) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=25.27..500,561.38 rows=11,074,440 width=68) (actual rows= loops=)

  • Hash Cond: (uwsf.userid = uc.userid)
24. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.43..351,267.68 rows=11,074,440 width=64) (actual rows= loops=)

25. 0.000 0.000 ↓ 0.0

Seq Scan on timesheet t (cost=0.00..754.88 rows=36,688 width=28) (actual rows= loops=)

26. 0.000 0.000 ↓ 0.0

Index Scan using dm_userworkschedule_facts_pkey on dm_userworkschedule_facts uwsf (cost=0.43..6.92 rows=263 width=40) (actual rows= loops=)

  • Index Cond: ((userid = t.userid) AND (date >= t.startdate) AND (date <= t.enddate))
27. 0.000 0.000 ↓ 0.0

Hash (cost=15.43..15.43 rows=753 width=8) (actual rows= loops=)

28. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1.61..15.43 rows=753 width=8) (actual rows= loops=)

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

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

30. 0.000 0.000 ↓ 0.0

Hash (cost=1.27..1.27 rows=27 width=4) (actual rows= loops=)

31. 0.000 0.000 ↓ 0.0

Seq Scan on calendar c (cost=0.00..1.27 rows=27 width=4) (actual rows= loops=)

32. 0.000 0.000 ↓ 0.0

Hash (cost=6,880,934.20..6,880,934.20 rows=608,339 width=4,245) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Nested Loop (cost=2,786,560.94..6,880,934.20 rows=608,339 width=4,245) (actual rows= loops=)

  • Join Filter: (ts.id = dm_timesheetlist_facts51.timesheetid)
34. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,786,560.65..6,684,586.69 rows=608,339 width=4,197) (actual rows= loops=)

  • Hash Cond: (at_2.timeoffcodeid = timeoffcode50.id)
35. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,786,559.42..6,682,988.57 rows=608,339 width=4,185) (actual rows= loops=)

  • Hash Cond: (uprrh_1.currencyid = currencyinfo49.id)
36. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,786,558.27..6,680,423.70 rows=608,339 width=4,177) (actual rows= loops=)

  • Hash Cond: (at_2.id = at.id)
  • Join Filter: (((((CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.clientid ELSE at_2.userspecifiedclientid END) IS NULL) AND (CASE WHEN (pj_5.clientbillingallocationmethod = 0) THEN pc_2.clientid ELSE at.userspecifiedclientid END IS NULL)) OR (CASE WHEN (pj_5.clientbillingallocationmethod = 0) THEN pc_2.clientid ELSE at.userspecifiedclientid END = (CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.clientid ELSE at_2.userspecifiedclientid END))) AND ((((CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.effectivedate ELSE pc_7.effectivedate END) IS NULL) AND (CASE WHEN (pj_5.clientbillingallocationmethod = 0) THEN pc_2.effectivedate ELSE pc_3.effectivedate END IS NULL)) OR (CASE WHEN (pj_5.clientbillingallocationmethod = 0) THEN pc_2.effectivedate ELSE pc_3.effectivedate END = (CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.effectivedate ELSE pc_7.effectivedate END))))
37. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,675,894.16..5,925,309.84 rows=608,339 width=4,021) (actual rows= loops=)

  • Hash Cond: (at_2.id = at_1.id)
  • Join Filter: (((((CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.clientid ELSE at_2.userspecifiedclientid END) IS NULL) AND (CASE WHEN (pj_8.clientbillingallocationmethod = 0) THEN pc_4.clientid ELSE at_1.userspecifiedclientid END IS NULL)) OR (CASE WHEN (pj_8.clientbillingallocationmethod = 0) THEN pc_4.clientid ELSE at_1.userspecifiedclientid END = (CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.clientid ELSE at_2.userspecifiedclientid END))) AND ((((CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.effectivedate ELSE pc_7.effectivedate END) IS NULL) AND (CASE WHEN (pj_8.clientbillingallocationmethod = 0) THEN pc_4.effectivedate ELSE pc_5.effectivedate END IS NULL)) OR (CASE WHEN (pj_8.clientbillingallocationmethod = 0) THEN pc_4.effectivedate ELSE pc_5.effectivedate END = (CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.effectivedate ELSE pc_7.effectivedate END))))
38. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,501,422.31..5,127,197.32 rows=608,339 width=3,950) (actual rows= loops=)

  • Hash Cond: (at_2.activityid = activities44.id)
39. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,501,421.19..5,125,599.32 rows=608,339 width=3,421) (actual rows= loops=)

  • Hash Cond: (tk_1.id = tk_2.id)
40. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,501,192.48..5,117,005.94 rows=608,339 width=3,374) (actual rows= loops=)

  • Hash Cond: (tk.id = tdh_1.taskid)
41. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,501,062.63..5,115,276.66 rows=608,339 width=3,330) (actual rows= loops=)

  • Hash Cond: (at_2.taskid = tk_1.id)
  • Join Filter: (((((CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.clientid ELSE at_2.userspecifiedclientid END) IS NULL) AND (pc_1.clientid IS NULL)) OR (pc_1.clientid = (CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.clientid ELSE at_2.userspecifiedclientid END))) AND ((((CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.effectivedate ELSE pc_7.effectivedate END) IS NULL) AND (pc_1.effectivedate IS NULL)) OR (pc_1.effectivedate = (CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.effectivedate ELSE pc_7.effectivedate END))))
42. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,627.81..5,096,753.96 rows=608,339 width=3,242) (actual rows= loops=)

  • Hash Cond: (pj.totalestimatedcontractcurrencyid = currencyinfo36.id)
43. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,626.66..5,094,189.08 rows=608,339 width=3,238) (actual rows= loops=)

  • Hash Cond: (employeetypegroup34.id = pegroupdenormalizedhierarchy35.employeetypegroupid)
44. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,600.68..5,092,556.69 rows=608,339 width=3,222) (actual rows= loops=)

  • Hash Cond: (CASE WHEN ("substring"(projectkeyvalue59.uri, '^urn:replicon-tenant:fb4ffdc33b6b40529c88f1ebe6cdbb93:employee-type-group:(.*)$'::text) ~* '^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$'::text) THEN ("substring"(projectkeyvalue59.uri, '^urn:replicon-tenant:fb4ffdc33b6b40529c88f1ebe6cdbb93:employee-type-group:(.*)$'::text))::uuid ELSE NULL::uuid END = employeetypegroup34.id)
45. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,588.88..5,090,516.83 rows=608,339 width=2,902) (actual rows= loops=)

  • Hash Cond: (pj.id = projectkeyvalue59.projectid)
46. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,575.57..5,088,210.86 rows=608,339 width=2,870) (actual rows= loops=)

  • Hash Cond: (pj.programid = program.id)
47. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,566.45..5,085,487.57 rows=608,339 width=2,737) (actual rows= loops=)

  • Hash Cond: (CASE WHEN ("substring"(projectkeyvalue58.uri, '^urn:replicon-tenant:fb4ffdc33b6b40529c88f1ebe6cdbb93:department-group:(.*)$'::text) ~* '^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$'::text) THEN ("substring"(projectkeyvalue58.uri, '^urn:replicon-tenant:fb4ffdc33b6b40529c88f1ebe6cdbb93:department-group:(.*)$'::text))::uuid ELSE NULL::uuid END = departmentgroup32.id)
48. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,564.41..5,079,371.71 rows=608,339 width=2,694) (actual rows= loops=)

  • Hash Cond: (pj.id = projectkeyvalue58.projectid)
49. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,551.09..5,077,065.74 rows=608,339 width=2,662) (actual rows= loops=)

  • Hash Cond: (pj_3.estimatedexpensescurrencyid = currencyinfo30.id)
50. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,549.94..5,074,765.20 rows=608,339 width=2,658) (actual rows= loops=)

  • Hash Cond: (pj_3.estimatedcostcurrencyid = currencyinfo29.id)
51. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,548.78..5,072,453.81 rows=608,339 width=2,654) (actual rows= loops=)

  • Hash Cond: (p.id = pj_3.id)
52. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,498.76..5,070,794.23 rows=608,339 width=2,624) (actual rows= loops=)

  • Hash Cond: (p.id = pj_1.id)
  • Join Filter: ((((pc_8.clientid IS NULL) AND (pc.clientid IS NULL)) OR (pc.clientid = pc_8.clientid)) AND (((pc_8.effectivedate IS NULL) AND (pc.effectivedate IS NULL)) OR (pc.effectivedate = pc_8.effectivedate)))
53. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,500,327.28..5,050,151.12 rows=608,339 width=2,536) (actual rows= loops=)

  • Hash Cond: (pj.projectleaderapproverid = userinfo26.id)
54. 0.000 0.000 ↓ 0.0

Hash Join (cost=2,500,284.87..5,048,506.06 rows=608,339 width=2,498) (actual rows= loops=)

  • Hash Cond: (ts.userid = uprrh.userid)
55. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=2,500,125.64..5,039,971.35 rows=609,126 width=2,440) (actual rows= loops=)

  • Merge Cond: (at_2.projectid = p.id)
  • Join Filter: (((((CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.clientid ELSE at_2.userspecifiedclientid END) IS NULL) AND (pc_8.clientid IS NULL)) OR (pc_8.clientid = (CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.clientid ELSE at_2.userspecifiedclientid END))) AND ((((CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.effectivedate ELSE pc_7.effectivedate END) IS NULL) AND (pc_8.effectivedate IS NULL)) OR (pc_8.effectivedate = (CASE WHEN (pj_11.clientbillingallocationmethod = 0) THEN pc_6.effectivedate ELSE pc_7.effectivedate END))))
56. 0.000 0.000 ↓ 0.0

Sort (cost=2,310,916.03..2,312,438.85 rows=609,126 width=2,432) (actual rows= loops=)

  • Sort Key: at_2.projectid
57. 0.000 0.000 ↓ 0.0

Hash Join (cost=97,008.45..1,156,676.05 rows=609,126 width=2,432) (actual rows= loops=)

  • Hash Cond: (ts.userid = touc.userid)
58. 0.000 0.000 ↓ 0.0

Hash Join (cost=96,986.04..1,155,045.92 rows=609,126 width=2,424) (actual rows= loops=)

  • Hash Cond: (ui.employeetypeid = employeetype20.id)
59. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=96,984.90..1,152,316.41 rows=609,126 width=2,410) (actual rows= loops=)

  • Hash Cond: (ui_1.defaultactivityid = act.id)
60. 0.000 0.000 ↓ 0.0

Hash Join (cost=96,983.79..1,150,716.34 rows=609,126 width=2,401) (actual rows= loops=)

  • Hash Cond: (ts.userid = ui_1.id)
61. 0.000 0.000 ↓ 0.0

Hash Join (cost=96,941.37..1,149,066.21 rows=609,126 width=2,393) (actual rows= loops=)

  • Hash Cond: (du.departmentid = departments.id)
62. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=96,936.97..1,147,399.52 rows=609,126 width=2,397) (actual rows= loops=)

  • Hash Cond: (ui.id = userhierarchy53.userid)
63. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=96,863.96..1,137,343.62 rows=609,126 width=2,351) (actual rows= loops=)

  • Hash Cond: (ts_1.id = tan.timesheetid)
64. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=96,736.97..1,134,891.90 rows=609,126 width=2,297) (actual rows= loops=)

  • Hash Cond: (ts_1.id = ta_1.timesheetid)
65. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=96,708.56..1,132,578.44 rows=609,126 width=2,163) (actual rows= loops=)

66. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=96,708.28..941,582.15 rows=609,126 width=1,631) (actual rows= loops=)

  • Hash Cond: (ts_1.id = tah.timesheetid)
67. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=23,633.01..638,097.77 rows=609,126 width=1,438) (actual rows= loops=)

  • Hash Cond: (pj.projectstatuslabelid = projectstatuslabel8.id)
68. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=23,631.85..635,529.58 rows=609,126 width=1,450) (actual rows= loops=)

  • Hash Cond: (at_2.projectid = pj.id)
69. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=22,118.86..632,404.96 rows=609,126 width=685) (actual rows= loops=)

  • Hash Cond: (at_2.taskid = tk.id)
70. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=12,637.24..615,381.01 rows=609,126 width=511) (actual rows= loops=)

  • Hash Cond: (ts_1.id = tahls.timesheetid)
71. 0.000 0.000 ↓ 0.0

Hash Join (cost=6,104.63..600,714.99 rows=609,126 width=503) (actual rows= loops=)

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

Hash Join (cost=2,701.50..595,712.72 rows=609,126 width=483) (actual rows= loops=)

  • Hash Cond: (ts.id = ts_1.id)
73. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,488.02..592,900.09 rows=609,126 width=459) (actual rows= loops=)

  • Hash Cond: (ts.userid = ui.id)
74. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,353.02..583,151.94 rows=939,171 width=248) (actual rows= loops=)

  • Hash Cond: (at_2.timesheetid = ts.id)
75. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=139.54..570,081.08 rows=939,175 width=620) (actual rows= loops=)

  • Hash Cond: (at_2.projectid = pj_11.id)
  • Join Filter: ((at_2.entrydate >= pc_6.effectivedate) AND (at_2.entrydate <= pc_6.enddate))
76. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=49.99..35,941.31 rows=939,175 width=133) (actual rows= loops=)

  • Hash Cond: ((at_2.projectid = pj_12.id) AND (at_2.userspecifiedclientid = pc_7.clientid))
  • Join Filter: ((at_2.entrydate >= pc_7.effectivedate) AND (at_2.entrydate <= pc_7.enddate))
77. 0.000 0.000 ↓ 0.0

Seq Scan on dm_attendancetimeallocation_facts at_2 (cost=0.00..28,847.49 rows=939,175 width=129) (actual rows= loops=)

  • Filter: ((entrydate >= '2013-07-01'::date) AND (entrydate <= '2020-06-30'::date))
78. 0.000 0.000 ↓ 0.0

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

79. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.15..49.96 rows=2 width=16) (actual rows= loops=)

80. 0.000 0.000 ↓ 0.0

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

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

Index Only Scan using uix4pc_projectclienteffectiveend on projectclient pc_7 (cost=0.15..5.24 rows=5 width=16) (actual rows= loops=)

  • Index Cond: (projectid = pj_12.id)
82. 0.000 0.000 ↓ 0.0

Hash (cost=76.80..76.80 rows=1,020 width=52) (actual rows= loops=)

83. 0.000 0.000 ↓ 0.0

Hash Join (cost=51.35..76.80 rows=1,020 width=52) (actual rows= loops=)

  • Hash Cond: (pc_6.projectid = pj_11.id)
84. 0.000 0.000 ↓ 0.0

Seq Scan on projectclient pc_6 (cost=0.00..22.75 rows=1,020 width=48) (actual rows= loops=)

85. 0.000 0.000 ↓ 0.0

Hash (cost=44.67..44.67 rows=534 width=8) (actual rows= loops=)

86. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_11 (cost=0.00..44.67 rows=534 width=8) (actual rows= loops=)

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

Hash (cost=754.88..754.88 rows=36,688 width=20) (actual rows= loops=)

88. 0.000 0.000 ↓ 0.0

Seq Scan on timesheet ts (cost=0.00..754.88 rows=36,688 width=20) (actual rows= loops=)

89. 0.000 0.000 ↓ 0.0

Hash (cost=128.73..128.73 rows=502 width=211) (actual rows= loops=)

90. 0.000 0.000 ↓ 0.0

Hash Join (cost=81.51..128.73 rows=502 width=211) (actual rows= loops=)

  • Hash Cond: (ui.id = login.userid)
91. 0.000 0.000 ↓ 0.0

Hash Join (cost=47.10..92.98 rows=502 width=203) (actual rows= loops=)

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

Hash Join (cost=42.69..87.20 rows=502 width=181) (actual rows= loops=)

  • Hash Cond: (du.userid = ui.id)
93. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (departmentid = ANY ('{1,2,56,81,84,86,48,66,52,76,75,54,79,47,94,97,64,65,63,93,7,46,59,62,61,60,89,98,82,58,53,77,78,95,96,87,57,88,101,103,104,105,111,112,113,114,115,106,116,117,118,119,120,121,122,123,124,107,125,126,127,128,129,108,109,144,130,131,132,133,145,134,135,136,137,138,139,140,141,30,31,32,38,102,51,74,4,55,80,50,92,73,90,49,68,67,91,69,83,70,71,72,100,3,148,149,150}'::integer[]))
94. 0.000 0.000 ↓ 0.0

Hash (cost=32.74..32.74 rows=774 width=173) (actual rows= loops=)

95. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo ui (cost=0.00..32.74 rows=774 width=173) (actual rows= loops=)

96. 0.000 0.000 ↓ 0.0

Hash (cost=3.07..3.07 rows=107 width=22) (actual rows= loops=)

97. 0.000 0.000 ↓ 0.0

Seq Scan on departments dep (cost=0.00..3.07 rows=107 width=22) (actual rows= loops=)

98. 0.000 0.000 ↓ 0.0

Hash (cost=24.74..24.74 rows=774 width=8) (actual rows= loops=)

99. 0.000 0.000 ↓ 0.0

Seq Scan on login (cost=0.00..24.74 rows=774 width=8) (actual rows= loops=)

100. 0.000 0.000 ↓ 0.0

Hash (cost=754.88..754.88 rows=36,688 width=24) (actual rows= loops=)

101. 0.000 0.000 ↓ 0.0

Seq Scan on timesheet ts_1 (cost=0.00..754.88 rows=36,688 width=24) (actual rows= loops=)

102. 0.000 0.000 ↓ 0.0

Hash (cost=2,944.38..2,944.38 rows=36,700 width=20) (actual rows= loops=)

103. 0.000 0.000 ↓ 0.0

Seq Scan on dm_timesheetlist_facts tslist (cost=0.00..2,944.38 rows=36,700 width=20) (actual rows= loops=)

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

Hash (cost=6,092.24..6,092.24 rows=35,230 width=24) (actual rows= loops=)

105. 0.000 0.000 ↓ 0.0

Hash Join (cost=2,336.77..6,092.24 rows=35,230 width=24) (actual rows= loops=)

  • Hash Cond: (tahls.timesheetid = ts_2.id)
106. 0.000 0.000 ↓ 0.0

Hash Join (cost=1,041.86..4,702.71 rows=36,038 width=24) (actual rows= loops=)

  • Hash Cond: (ta.serialnumber = tahls.lastsubmitserialnumber)
107. 0.000 0.000 ↓ 0.0

Seq Scan on timesheetapprovalhistory ta (cost=0.00..2,871.62 rows=114,362 width=12) (actual rows= loops=)

108. 0.000 0.000 ↓ 0.0

Hash (cost=591.38..591.38 rows=36,038 width=20) (actual rows= loops=)

109. 0.000 0.000 ↓ 0.0

Seq Scan on timesheetapprovalhistorylastsubmit tahls (cost=0.00..591.38 rows=36,038 width=20) (actual rows= loops=)

110. 0.000 0.000 ↓ 0.0

Hash (cost=846.60..846.60 rows=35,865 width=16) (actual rows= loops=)

111. 0.000 0.000 ↓ 0.0

Seq Scan on timesheet ts_2 (cost=0.00..846.60 rows=35,865 width=16) (actual rows= loops=)

  • Filter: (approvalstatus = ANY ('{1,2}'::integer[]))
112. 0.000 0.000 ↓ 0.0

Hash (cost=9,448.37..9,448.37 rows=2,660 width=174) (actual rows= loops=)

113. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=3.00..9,448.37 rows=2,660 width=174) (actual rows= loops=)

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

Merge Left Join (cost=0.56..9,395.25 rows=2,660 width=174) (actual rows= loops=)

  • Merge Cond: (tk.id = tdh.taskid)
115. 0.000 0.000 ↓ 0.0

Index Scan using task_pkey on task tk (cost=0.28..9,232.17 rows=2,660 width=170) (actual rows= loops=)

116.          

SubPlan (for Index Scan)

117. 0.000 0.000 ↓ 0.0

Index Scan using project_pkey on project pj_13 (cost=0.28..2.29 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (id = tk.projectid)
118. 0.000 0.000 ↓ 0.0

Limit (cost=0.42..0.56 rows=1 width=4) (actual rows= loops=)

119. 0.000 0.000 ↓ 0.0

Index Only Scan using ixpta2taskid on dm_projecttimeallocation_facts dm_projecttimeallocation_facts_2 (cost=0.42..60.52 rows=441 width=4) (actual rows= loops=)

  • Index Cond: (taskid = tk.id)
120. 0.000 0.000 ↓ 0.0

Limit (cost=0.42..0.56 rows=1 width=4) (actual rows= loops=)

121. 0.000 0.000 ↓ 0.0

Index Only Scan Backward using ixpta2taskid on dm_projecttimeallocation_facts dm_projecttimeallocation_facts_3 (cost=0.42..60.52 rows=441 width=4) (actual rows= loops=)

  • Index Cond: (taskid = tk.id)
122. 0.000 0.000 ↓ 0.0

Index Scan using taskdenormalizedhierarchy_pkey on taskdenormalizedhierarchy tdh (cost=0.28..123.18 rows=2,660 width=5) (actual rows= loops=)

123. 0.000 0.000 ↓ 0.0

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

124. 0.000 0.000 ↓ 0.0

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

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

Hash (cost=1,506.31..1,506.31 rows=534 width=765) (actual rows= loops=)

126. 0.000 0.000 ↓ 0.0

Seq Scan on project pj (cost=0.00..1,506.31 rows=534 width=765) (actual rows= loops=)

127.          

SubPlan (for Seq Scan)

128. 0.000 0.000 ↓ 0.0

Limit (cost=0.42..1.37 rows=1 width=4) (actual rows= loops=)

129. 0.000 0.000 ↓ 0.0

Index Scan using ixpta2projectid on dm_projecttimeallocation_facts (cost=0.42..1,963.76 rows=2,078 width=4) (actual rows= loops=)

  • Index Cond: (projectid = pj.id)
  • Filter: ((timeoffcodeid IS NULL) AND (breaktypeid IS NULL))
130. 0.000 0.000 ↓ 0.0

Limit (cost=0.42..1.37 rows=1 width=4) (actual rows= loops=)

131. 0.000 0.000 ↓ 0.0

Index Scan Backward using ixpta2projectid on dm_projecttimeallocation_facts dm_projecttimeallocation_facts_1 (cost=0.42..1,963.76 rows=2,078 width=4) (actual rows= loops=)

  • Index Cond: (projectid = pj.id)
  • Filter: ((timeoffcodeid IS NULL) AND (breaktypeid IS NULL))
132. 0.000 0.000 ↓ 0.0

Hash (cost=1.07..1.07 rows=7 width=20) (actual rows= loops=)

133. 0.000 0.000 ↓ 0.0

Seq Scan on projectstatuslabel projectstatuslabel8 (cost=0.00..1.07 rows=7 width=20) (actual rows= loops=)

134. 0.000 0.000 ↓ 0.0

Hash (cost=72,313.73..72,313.73 rows=18,203 width=209) (actual rows= loops=)

135. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1,043.00..72,313.73 rows=18,203 width=209) (actual rows= loops=)

136. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1,042.58..38,266.58 rows=18,203 width=152) (actual rows= loops=)

137. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,042.15..4,219.43 rows=18,203 width=79) (actual rows= loops=)

  • Hash Cond: (tah.timesheetid = tahls_1.timesheetid)
  • Filter: ((tahls_1.timesheetid IS NULL) OR (tah.serialnumber > tahls_1.lastsubmitserialnumber))
138. 0.000 0.000 ↓ 0.0

Index Scan using ixtahaction on timesheetapprovalhistory tah (cost=0.29..3,034.20 rows=54,609 width=83) (actual rows= loops=)

  • Index Cond: (action = ANY ('{2,3,6}'::integer[]))
  • Filter: ((systemprocessidentifier IS NULL) OR (systemprocessidentifier <> 'urn:replicon:approval-system-process:timesheet-submit-script-data-and-validation'::text))
139. 0.000 0.000 ↓ 0.0

Hash (cost=591.38..591.38 rows=36,038 width=20) (actual rows= loops=)

140. 0.000 0.000 ↓ 0.0

Seq Scan on timesheetapprovalhistorylastsubmit tahls_1 (cost=0.00..591.38 rows=36,038 width=20) (actual rows= loops=)

141. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvtimesheetapprovalhistoryid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue11 (cost=0.43..1.86 rows=1 width=89) (actual rows= loops=)

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

Index Scan using ixtahkvtimesheetapprovalhistoryid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue12 (cost=0.43..1.86 rows=1 width=89) (actual rows= loops=)

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

Index Scan using uixreportperiodts on reportperiod reportperiod9 (cost=0.29..0.31 rows=1 width=532) (actual rows= loops=)

  • Index Cond: (ts_1.id = timesheetid)
144. 0.000 0.000 ↓ 0.0

Hash (cost=28.35..28.35 rows=5 width=150) (actual rows= loops=)

145. 0.000 0.000 ↓ 0.0

Nested Loop (cost=1.11..28.35 rows=5 width=150) (actual rows= loops=)

  • Join Filter: (tar.timesheetattestationid = ta_1.id)
146. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1.11..26.91 rows=5 width=146) (actual rows= loops=)

147. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.56..13.98 rows=5 width=101) (actual rows= loops=)

148. 0.000 0.000 ↓ 0.0

Seq Scan on timesheetattestationrevision tar (cost=0.00..1.06 rows=5 width=40) (actual rows= loops=)

  • Filter: (totimestamputc IS NULL)
149. 0.000 0.000 ↓ 0.0

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

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

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

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

Materialize (cost=0.00..1.07 rows=5 width=36) (actual rows= loops=)

152. 0.000 0.000 ↓ 0.0

Seq Scan on timesheetattestation ta_1 (cost=0.00..1.05 rows=5 width=36) (actual rows= loops=)

153. 0.000 0.000 ↓ 0.0

Hash (cost=123.94..123.94 rows=244 width=70) (actual rows= loops=)

154. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=109.97..123.94 rows=244 width=70) (actual rows= loops=)

  • Hash Cond: (tsar.userid = login15.userid)
155. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=75.55..88.88 rows=244 width=66) (actual rows= loops=)

  • Hash Cond: (tsar.userid = userinfo14.id)
156. 0.000 0.000 ↓ 0.0

Hash Join (cost=33.14..45.83 rows=244 width=21) (actual rows= loops=)

  • Hash Cond: (tsar.nodeid = tan.id)
157. 0.000 0.000 ↓ 0.0

Seq Scan on tsapprovalrequest tsar (cost=0.00..12.05 rows=244 width=20) (actual rows= loops=)

  • Filter: ((systemprocessidentifier IS NULL) OR (systemprocessidentifier <> 'urn:replicon:approval-system-process:timesheet-submit-script-data-and-validation'::text))
158. 0.000 0.000 ↓ 0.0

Hash (cost=26.95..26.95 rows=495 width=32) (actual rows= loops=)

159. 0.000 0.000 ↓ 0.0

Seq Scan on timesheetapprovalnodes tan (cost=0.00..26.95 rows=495 width=32) (actual rows= loops=)

160. 0.000 0.000 ↓ 0.0

Hash (cost=32.74..32.74 rows=774 width=49) (actual rows= loops=)

161. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo userinfo14 (cost=0.00..32.74 rows=774 width=49) (actual rows= loops=)

162. 0.000 0.000 ↓ 0.0

Hash (cost=24.74..24.74 rows=774 width=8) (actual rows= loops=)

163. 0.000 0.000 ↓ 0.0

Seq Scan on login login15 (cost=0.00..24.74 rows=774 width=8) (actual rows= loops=)

164. 0.000 0.000 ↓ 0.0

Hash (cost=64.40..64.40 rows=688 width=50) (actual rows= loops=)

165. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=42.42..64.40 rows=688 width=50) (actual rows= loops=)

  • Hash Cond: (userhierarchy53.supervisorid = userinfo17.id)
166. 0.000 0.000 ↓ 0.0

Seq Scan on userhierarchy userhierarchy53 (cost=0.00..20.17 rows=688 width=8) (actual rows= loops=)

  • Filter: (('2020-07-24'::date >= startdate) AND ('2020-07-24'::date <= enddate))
167. 0.000 0.000 ↓ 0.0

Hash (cost=32.74..32.74 rows=774 width=46) (actual rows= loops=)

168. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo userinfo17 (cost=0.00..32.74 rows=774 width=46) (actual rows= loops=)

169. 0.000 0.000 ↓ 0.0

Hash (cost=3.07..3.07 rows=107 width=4) (actual rows= loops=)

170. 0.000 0.000 ↓ 0.0

Seq Scan on departments (cost=0.00..3.07 rows=107 width=4) (actual rows= loops=)

171. 0.000 0.000 ↓ 0.0

Hash (cost=32.74..32.74 rows=774 width=8) (actual rows= loops=)

172. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo ui_1 (cost=0.00..32.74 rows=774 width=8) (actual rows= loops=)

173. 0.000 0.000 ↓ 0.0

Hash (cost=1.05..1.05 rows=5 width=17) (actual rows= loops=)

174. 0.000 0.000 ↓ 0.0

Seq Scan on activities act (cost=0.00..1.05 rows=5 width=17) (actual rows= loops=)

175. 0.000 0.000 ↓ 0.0

Hash (cost=1.06..1.06 rows=6 width=18) (actual rows= loops=)

176. 0.000 0.000 ↓ 0.0

Seq Scan on employeetype employeetype20 (cost=0.00..1.06 rows=6 width=18) (actual rows= loops=)

177. 0.000 0.000 ↓ 0.0

Hash (cost=12.74..12.74 rows=774 width=8) (actual rows= loops=)

178. 0.000 0.000 ↓ 0.0

Seq Scan on timeoffuserconfig touc (cost=0.00..12.74 rows=774 width=8) (actual rows= loops=)

179. 0.000 0.000 ↓ 0.0

Materialize (cost=189,209.60..191,819.68 rows=94,912 width=12) (actual rows= loops=)

180. 0.000 0.000 ↓ 0.0

Unique (cost=189,209.60..190,633.28 rows=94,912 width=48) (actual rows= loops=)

181. 0.000 0.000 ↓ 0.0

Sort (cost=189,209.60..189,446.88 rows=94,912 width=48) (actual rows= loops=)

  • Sort Key: p.id, pc_8.clientid, pc_8.effectivedate, (CASE WHEN (p.clientbillingallocationmethod = 1) THEN NULL::numeric ELSE (COALESCE(pc_8.costallocationpercentage, '100'::numeric) / '100'::numeric) END), p.clientbillingallocationmethod
182. 0.000 0.000 ↓ 0.0

Append (cost=50.02..179,693.09 rows=94,912 width=48) (actual rows= loops=)

183. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=50.02..78.01 rows=1,020 width=48) (actual rows= loops=)

  • Hash Cond: (pc_8.projectid = p.id)
184. 0.000 0.000 ↓ 0.0

Seq Scan on projectclient pc_8 (cost=0.00..20.20 rows=1,020 width=32) (actual rows= loops=)

185. 0.000 0.000 ↓ 0.0

Hash (cost=43.34..43.34 rows=534 width=8) (actual rows= loops=)

186. 0.000 0.000 ↓ 0.0

Seq Scan on project p (cost=0.00..43.34 rows=534 width=8) (actual rows= loops=)

187. 0.000 0.000 ↓ 0.0

Unique (cost=164,582.14..178,665.95 rows=93,892 width=48) (actual rows= loops=)

188. 0.000 0.000 ↓ 0.0

Sort (cost=164,582.14..166,929.44 rows=938,921 width=48) (actual rows= loops=)

  • Sort Key: facts.projectid, facts.clientid, (CASE WHEN (facts.clientid IS NULL) THEN NULL::date ELSE facts.effectivedate END), (CASE WHEN (p_1.clientbillingallocationmethod = 1) THEN NULL::numeric ELSE '1'::numeric END), p_1.clientbillingallocationmethod
189. 0.000 0.000 ↓ 0.0

Hash Join (cost=50.02..38,426.15 rows=938,921 width=48) (actual rows= loops=)

  • Hash Cond: (facts.projectid = p_1.id)
  • Join Filter: ((facts.clientid IS NULL) OR (p_1.clientbillingallocationmethod = 1))
190. 0.000 0.000 ↓ 0.0

Seq Scan on dm_projectclientcostactuals_facts facts (cost=0.00..33,540.21 rows=938,921 width=12) (actual rows= loops=)

191. 0.000 0.000 ↓ 0.0

Hash (cost=43.34..43.34 rows=534 width=8) (actual rows= loops=)

192. 0.000 0.000 ↓ 0.0

Seq Scan on project p_1 (cost=0.00..43.34 rows=534 width=8) (actual rows= loops=)

193. 0.000 0.000 ↓ 0.0

Hash (cost=149.57..149.57 rows=773 width=58) (actual rows= loops=)

194. 0.000 0.000 ↓ 0.0

Hash Join (cost=82.84..149.57 rows=773 width=58) (actual rows= loops=)

  • Hash Cond: (uprrh.userid = ui_2.id)
195. 0.000 0.000 ↓ 0.0

Nested Loop (cost=56.28..120.97 rows=773 width=54) (actual rows= loops=)

196. 0.000 0.000 ↓ 0.0

Seq Scan on currencyinfo currencyinfo24 (cost=0.00..1.09 rows=1 width=4) (actual rows= loops=)

  • Filter: ($11 = id)
197. 0.000 0.000 ↓ 0.0

Hash Join (cost=56.28..112.15 rows=773 width=50) (actual rows= loops=)

  • Hash Cond: (uprrh.currencyid = currencyinfo22.id)
198. 0.000 0.000 ↓ 0.0

Hash Join (cost=55.13..107.74 rows=773 width=50) (actual rows= loops=)

  • Hash Cond: (usa.userid = uprrh.userid)
199. 0.000 0.000 ↓ 0.0

Index Scan using ix3usa_ededst on userscheduleassignment usa (cost=0.29..42.27 rows=774 width=28) (actual rows= loops=)

  • Index Cond: ((date_trunc('day'::text, now()) >= effectivedate) AND (date_trunc('day'::text, now()) <= enddate))
200. 0.000 0.000 ↓ 0.0

Hash (cost=45.18..45.18 rows=773 width=22) (actual rows= loops=)

201. 0.000 0.000 ↓ 0.0

Hash Join (cost=2.42..45.18 rows=773 width=22) (actual rows= loops=)

  • Hash Cond: (uprrh.currencyid = exchangerate_1.fixedcurrencyid)
202. 0.000 0.000 ↓ 0.0

Seq Scan on userprojectroleratehistory uprrh (cost=0.00..26.33 rows=773 width=11) (actual rows= loops=)

  • Filter: ((('now'::cstring)::date >= effectivedate) AND (('now'::cstring)::date <= enddate))
203. 0.000 0.000 ↓ 0.0

Hash (cost=2.34..2.34 rows=7 width=11) (actual rows= loops=)

204. 0.000 0.000 ↓ 0.0

Index Scan using uix3er_currencyideffectivedate on exchangerate exchangerate_1 (cost=0.14..2.34 rows=7 width=11) (actual rows= loops=)

  • Index Cond: ((variablecurrencyid = $10) AND (('now'::cstring)::date >= effectivedate))
  • Filter: (('now'::cstring)::date <= enddate)
205. 0.000 0.000 ↓ 0.0

Hash (cost=1.07..1.07 rows=7 width=8) (actual rows= loops=)

206. 0.000 0.000 ↓ 0.0

Seq Scan on currencyinfo currencyinfo22 (cost=0.00..1.07 rows=7 width=8) (actual rows= loops=)

207. 0.000 0.000 ↓ 0.0

Hash (cost=16.88..16.88 rows=774 width=4) (actual rows= loops=)

208. 0.000 0.000 ↓ 0.0

Index Only Scan using userinfo_pkey on userinfo ui_2 (cost=0.28..16.88 rows=774 width=4) (actual rows= loops=)

209. 0.000 0.000 ↓ 0.0

Hash (cost=32.74..32.74 rows=774 width=46) (actual rows= loops=)

210. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo userinfo26 (cost=0.00..32.74 rows=774 width=46) (actual rows= loops=)

211. 0.000 0.000 ↓ 0.0

Hash (cost=158.73..158.73 rows=1,020 width=100) (actual rows= loops=)

212. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=102.28..158.73 rows=1,020 width=100) (actual rows= loops=)

  • Hash Cond: ((pc.projectid = projectclient.projectid) AND (pc.effectivedate = (max(projectclient.effectivedate))))
213. 0.000 0.000 ↓ 0.0

Hash Join (cost=69.98..95.57 rows=1,020 width=66) (actual rows= loops=)

  • Hash Cond: (pj_2.id = pj_1.id)
214. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=19.96..42.86 rows=1,020 width=36) (actual rows= loops=)

  • Hash Cond: (pc.projectid = pj_2.id)
215. 0.000 0.000 ↓ 0.0

Seq Scan on projectclient pc (cost=0.00..20.20 rows=1,020 width=32) (actual rows= loops=)

216. 0.000 0.000 ↓ 0.0

Hash (cost=13.29..13.29 rows=534 width=4) (actual rows= loops=)

217. 0.000 0.000 ↓ 0.0

Index Only Scan using project_pkey on project pj_2 (cost=0.28..13.29 rows=534 width=4) (actual rows= loops=)

218. 0.000 0.000 ↓ 0.0

Hash (cost=43.34..43.34 rows=534 width=34) (actual rows= loops=)

219. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_1 (cost=0.00..43.34 rows=534 width=34) (actual rows= loops=)

220. 0.000 0.000 ↓ 0.0

Hash (cost=29.30..29.30 rows=200 width=8) (actual rows= loops=)

221. 0.000 0.000 ↓ 0.0

HashAggregate (cost=25.30..27.30 rows=200 width=8) (actual rows= loops=)

  • Group Key: projectclient.projectid
222. 0.000 0.000 ↓ 0.0

Seq Scan on projectclient (cost=0.00..20.20 rows=1,020 width=8) (actual rows= loops=)

223. 0.000 0.000 ↓ 0.0

Hash (cost=43.34..43.34 rows=534 width=34) (actual rows= loops=)

224. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_3 (cost=0.00..43.34 rows=534 width=34) (actual rows= loops=)

225. 0.000 0.000 ↓ 0.0

Hash (cost=1.07..1.07 rows=7 width=8) (actual rows= loops=)

226. 0.000 0.000 ↓ 0.0

Seq Scan on currencyinfo currencyinfo29 (cost=0.00..1.07 rows=7 width=8) (actual rows= loops=)

227. 0.000 0.000 ↓ 0.0

Hash (cost=1.07..1.07 rows=7 width=8) (actual rows= loops=)

228. 0.000 0.000 ↓ 0.0

Seq Scan on currencyinfo currencyinfo30 (cost=0.00..1.07 rows=7 width=8) (actual rows= loops=)

229. 0.000 0.000 ↓ 0.0

Hash (cost=13.30..13.30 rows=1 width=36) (actual rows= loops=)

230. 0.000 0.000 ↓ 0.0

Seq Scan on projectkeyvalue projectkeyvalue58 (cost=0.00..13.30 rows=1 width=36) (actual rows= loops=)

  • Filter: (upper(keyuri) = 'URN:REPLICON:PROJECT-KEY-VALUE-KEY:DEPARTMENT-GROUP'::text)
231. 0.000 0.000 ↓ 0.0

Hash (cost=2.03..2.03 rows=1 width=91) (actual rows= loops=)

232. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.00..2.03 rows=1 width=91) (actual rows= loops=)

  • Join Filter: (departmentgroup32.id = ntgroupdenormalizedhierarchy33.departmentgroupid)
233. 0.000 0.000 ↓ 0.0

Seq Scan on departmentgroup departmentgroup32 (cost=0.00..1.01 rows=1 width=32) (actual rows= loops=)

234. 0.000 0.000 ↓ 0.0

Seq Scan on departmentgroupdenormalizedhierarchy ntgroupdenormalizedhierarchy33 (cost=0.00..1.01 rows=1 width=75) (actual rows= loops=)

235. 0.000 0.000 ↓ 0.0

Hash (cost=9.08..9.08 rows=3 width=149) (actual rows= loops=)

236. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1.35..9.08 rows=3 width=149) (actual rows= loops=)

237. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=1.08..2.20 rows=3 width=130) (actual rows= loops=)

  • Hash Cond: (currencyinfo39.id = program.budgetcurrencyid)
238. 0.000 0.000 ↓ 0.0

Seq Scan on currencyinfo currencyinfo39 (cost=0.00..1.07 rows=7 width=8) (actual rows= loops=)

239. 0.000 0.000 ↓ 0.0

Hash (cost=1.04..1.04 rows=3 width=130) (actual rows= loops=)

240. 0.000 0.000 ↓ 0.0

Seq Scan on program (cost=0.00..1.04 rows=3 width=130) (actual rows= loops=)

241. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (program.programmanagerid = id)
242. 0.000 0.000 ↓ 0.0

Hash (cost=13.30..13.30 rows=1 width=36) (actual rows= loops=)

243. 0.000 0.000 ↓ 0.0

Seq Scan on projectkeyvalue projectkeyvalue59 (cost=0.00..13.30 rows=1 width=36) (actual rows= loops=)

  • Filter: (upper(keyuri) = 'URN:REPLICON:PROJECT-KEY-VALUE-KEY:EMPLOYEE-TYPE-GROUP'::text)
244. 0.000 0.000 ↓ 0.0

Hash (cost=10.80..10.80 rows=80 width=352) (actual rows= loops=)

245. 0.000 0.000 ↓ 0.0

Seq Scan on employeetypegroup employeetypegroup34 (cost=0.00..10.80 rows=80 width=352) (actual rows= loops=)

246. 0.000 0.000 ↓ 0.0

Hash (cost=17.10..17.10 rows=710 width=48) (actual rows= loops=)

247. 0.000 0.000 ↓ 0.0

Seq Scan on employeetypegroupdenormalizedhierarchy pegroupdenormalizedhierarchy35 (cost=0.00..17.10 rows=710 width=48) (actual rows= loops=)

248. 0.000 0.000 ↓ 0.0

Hash (cost=1.07..1.07 rows=7 width=8) (actual rows= loops=)

249. 0.000 0.000 ↓ 0.0

Seq Scan on currencyinfo currencyinfo36 (cost=0.00..1.07 rows=7 width=8) (actual rows= loops=)

250. 0.000 0.000 ↓ 0.0

Hash (cost=371.30..371.30 rows=5,081 width=92) (actual rows= loops=)

251. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=100.80..371.30 rows=5,081 width=92) (actual rows= loops=)

  • Hash Cond: (tk_1.projectid = pj_4.id)
252. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2.44..170.72 rows=2,660 width=34) (actual rows= loops=)

  • Hash Cond: (tk_1.estimatedcostcurrencyid = exchangerate_2.fixedcurrencyid)
253. 0.000 0.000 ↓ 0.0

Seq Scan on task tk_1 (cost=0.00..117.60 rows=2,660 width=31) (actual rows= loops=)

254. 0.000 0.000 ↓ 0.0

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

255. 0.000 0.000 ↓ 0.0

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

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

Hash (cost=85.61..85.61 rows=1,020 width=44) (actual rows= loops=)

257. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=52.26..85.61 rows=1,020 width=44) (actual rows= loops=)

  • Hash Cond: ((pc_1.projectid = projectclient_1.projectid) AND (pc_1.effectivedate = (max(projectclient_1.effectivedate))))
258. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=19.96..42.86 rows=1,020 width=36) (actual rows= loops=)

  • Hash Cond: (pc_1.projectid = pj_4.id)
259. 0.000 0.000 ↓ 0.0

Seq Scan on projectclient pc_1 (cost=0.00..20.20 rows=1,020 width=32) (actual rows= loops=)

260. 0.000 0.000 ↓ 0.0

Hash (cost=13.29..13.29 rows=534 width=4) (actual rows= loops=)

261. 0.000 0.000 ↓ 0.0

Index Only Scan using project_pkey on project pj_4 (cost=0.28..13.29 rows=534 width=4) (actual rows= loops=)

262. 0.000 0.000 ↓ 0.0

Hash (cost=29.30..29.30 rows=200 width=8) (actual rows= loops=)

263. 0.000 0.000 ↓ 0.0

HashAggregate (cost=25.30..27.30 rows=200 width=8) (actual rows= loops=)

  • Group Key: projectclient_1.projectid
264. 0.000 0.000 ↓ 0.0

Seq Scan on projectclient projectclient_1 (cost=0.00..20.20 rows=1,020 width=8) (actual rows= loops=)

265. 0.000 0.000 ↓ 0.0

Hash (cost=96.60..96.60 rows=2,660 width=48) (actual rows= loops=)

266. 0.000 0.000 ↓ 0.0

Seq Scan on taskdenormalizedhierarchy tdh_1 (cost=0.00..96.60 rows=2,660 width=48) (actual rows= loops=)

267. 0.000 0.000 ↓ 0.0

Hash (cost=195.46..195.46 rows=2,660 width=47) (actual rows= loops=)

268. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=3.59..195.46 rows=2,660 width=47) (actual rows= loops=)

  • Hash Cond: (tk_2.estimatedcostcurrencyid = currencyinfo42.id)
269. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2.44..184.02 rows=2,660 width=47) (actual rows= loops=)

  • Hash Cond: (tk_2.estimatedcostcurrencyid = exchangerate_3.fixedcurrencyid)
270. 0.000 0.000 ↓ 0.0

Seq Scan on task tk_2 (cost=0.00..117.60 rows=2,660 width=27) (actual rows= loops=)

271. 0.000 0.000 ↓ 0.0

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

272. 0.000 0.000 ↓ 0.0

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

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

Hash (cost=1.07..1.07 rows=7 width=8) (actual rows= loops=)

274. 0.000 0.000 ↓ 0.0

Seq Scan on currencyinfo currencyinfo42 (cost=0.00..1.07 rows=7 width=8) (actual rows= loops=)

275. 0.000 0.000 ↓ 0.0

Hash (cost=1.05..1.05 rows=5 width=533) (actual rows= loops=)

276. 0.000 0.000 ↓ 0.0

Seq Scan on activities activities44 (cost=0.00..1.05 rows=5 width=533) (actual rows= loops=)

277. 0.000 0.000 ↓ 0.0

Hash (cost=147,068.49..147,068.49 rows=941,629 width=107) (actual rows= loops=)

278. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=364.80..147,068.49 rows=941,629 width=107) (actual rows= loops=)

  • Hash Cond: ((at_1.projectid = pj_10.id) AND (at_1.userspecifiedclientid = pc_5.clientid))
  • Join Filter: ((at_1.entrydate >= pc_5.effectivedate) AND (at_1.entrydate <= pc_5.enddate))
279. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=314.81..139,956.26 rows=941,629 width=111) (actual rows= loops=)

  • Hash Cond: (at_1.userid = uprrh_1.userid)
  • Join Filter: ((at_1.entrydate >= uprrh_1.effectivedate) AND (at_1.entrydate <= uprrh_1.enddate))
280. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=290.41..61,070.44 rows=941,629 width=100) (actual rows= loops=)

  • Hash Cond: (at_1.taskid = tk_4.id)
281. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=139.56..58,444.41 rows=941,629 width=100) (actual rows= loops=)

  • Hash Cond: (at_1.projectid = pj_8.id)
282. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=89.55..55,903.02 rows=941,629 width=92) (actual rows= loops=)

  • Hash Cond: (at_1.projectid = pj_9.id)
  • Join Filter: ((at_1.entrydate >= pc_4.effectivedate) AND (at_1.entrydate <= pc_4.enddate))
283. 0.000 0.000 ↓ 0.0

Seq Scan on dm_attendancetimeallocation_facts at_1 (cost=0.00..24,139.33 rows=941,629 width=52) (actual rows= loops=)

  • Filter: ((timeoffcodeid IS NULL) AND (breaktypeid IS NULL))
284. 0.000 0.000 ↓ 0.0

Hash (cost=76.80..76.80 rows=1,020 width=48) (actual rows= loops=)

285. 0.000 0.000 ↓ 0.0

Hash Join (cost=51.35..76.80 rows=1,020 width=48) (actual rows= loops=)

  • Hash Cond: (pc_4.projectid = pj_9.id)
286. 0.000 0.000 ↓ 0.0

Seq Scan on projectclient pc_4 (cost=0.00..22.75 rows=1,020 width=48) (actual rows= loops=)

287. 0.000 0.000 ↓ 0.0

Hash (cost=44.67..44.67 rows=534 width=4) (actual rows= loops=)

288. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_9 (cost=0.00..44.67 rows=534 width=4) (actual rows= loops=)

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

Hash (cost=43.34..43.34 rows=534 width=12) (actual rows= loops=)

290. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_8 (cost=0.00..43.34 rows=534 width=12) (actual rows= loops=)

291. 0.000 0.000 ↓ 0.0

Hash (cost=117.60..117.60 rows=2,660 width=8) (actual rows= loops=)

292. 0.000 0.000 ↓ 0.0

Seq Scan on task tk_4 (cost=0.00..117.60 rows=2,660 width=8) (actual rows= loops=)

293. 0.000 0.000 ↓ 0.0

Hash (cost=14.73..14.73 rows=773 width=19) (actual rows= loops=)

294. 0.000 0.000 ↓ 0.0

Seq Scan on userprojectroleratehistory uprrh_1 (cost=0.00..14.73 rows=773 width=19) (actual rows= loops=)

295. 0.000 0.000 ↓ 0.0

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

296. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.15..49.96 rows=2 width=16) (actual rows= loops=)

297. 0.000 0.000 ↓ 0.0

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

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

Index Only Scan using uix4pc_projectclienteffectiveend on projectclient pc_5 (cost=0.15..5.24 rows=5 width=16) (actual rows= loops=)

  • Index Cond: (projectid = pj_10.id)
299. 0.000 0.000 ↓ 0.0

Hash (cost=73,145.70..73,145.70 rows=941,633 width=196) (actual rows= loops=)

300. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=359.66..73,145.70 rows=941,633 width=196) (actual rows= loops=)

  • Hash Cond: (at.taskid = tk_3.id)
301. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=208.81..70,519.65 rows=941,633 width=220) (actual rows= loops=)

  • Hash Cond: ((at.userid = ucnf.userid) AND (at.entrydate = ucnf.entrydate))
302. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=189.56..65,556.82 rows=941,633 width=100) (actual rows= loops=)

  • Hash Cond: (at.projectid = pj_5.id)
303. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=139.54..63,015.41 rows=941,633 width=96) (actual rows= loops=)

  • Hash Cond: (at.projectid = pj_6.id)
  • Join Filter: ((at.entrydate >= pc_2.effectivedate) AND (at.entrydate <= pc_2.enddate))
304. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=49.99..31,251.59 rows=941,633 width=56) (actual rows= loops=)

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

Seq Scan on dm_attendancetimeallocation_facts at (cost=0.00..24,139.33 rows=941,633 width=52) (actual rows= loops=)

  • Filter: (breaktypeid IS NULL)
306. 0.000 0.000 ↓ 0.0

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

307. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.15..49.96 rows=2 width=16) (actual rows= loops=)

308. 0.000 0.000 ↓ 0.0

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

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

Index Only Scan using uix4pc_projectclienteffectiveend on projectclient pc_3 (cost=0.15..5.24 rows=5 width=16) (actual rows= loops=)

  • Index Cond: (projectid = pj_7.id)
310. 0.000 0.000 ↓ 0.0

Hash (cost=76.80..76.80 rows=1,020 width=48) (actual rows= loops=)

311. 0.000 0.000 ↓ 0.0

Hash Join (cost=51.35..76.80 rows=1,020 width=48) (actual rows= loops=)

  • Hash Cond: (pc_2.projectid = pj_6.id)
312. 0.000 0.000 ↓ 0.0

Seq Scan on projectclient pc_2 (cost=0.00..22.75 rows=1,020 width=48) (actual rows= loops=)

313. 0.000 0.000 ↓ 0.0

Hash (cost=44.67..44.67 rows=534 width=4) (actual rows= loops=)

314. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_6 (cost=0.00..44.67 rows=534 width=4) (actual rows= loops=)

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

Hash (cost=43.34..43.34 rows=534 width=12) (actual rows= loops=)

316. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_5 (cost=0.00..43.34 rows=534 width=12) (actual rows= loops=)

317. 0.000 0.000 ↓ 0.0

Hash (cost=13.70..13.70 rows=370 width=88) (actual rows= loops=)

318. 0.000 0.000 ↓ 0.0

Seq Scan on usercostnormalizationfactor ucnf (cost=0.00..13.70 rows=370 width=88) (actual rows= loops=)

319. 0.000 0.000 ↓ 0.0

Hash (cost=117.60..117.60 rows=2,660 width=8) (actual rows= loops=)

320. 0.000 0.000 ↓ 0.0

Seq Scan on task tk_3 (cost=0.00..117.60 rows=2,660 width=8) (actual rows= loops=)

321. 0.000 0.000 ↓ 0.0

Hash (cost=1.07..1.07 rows=7 width=8) (actual rows= loops=)

322. 0.000 0.000 ↓ 0.0

Seq Scan on currencyinfo currencyinfo49 (cost=0.00..1.07 rows=7 width=8) (actual rows= loops=)

323. 0.000 0.000 ↓ 0.0

Hash (cost=1.10..1.10 rows=10 width=16) (actual rows= loops=)

324. 0.000 0.000 ↓ 0.0

Seq Scan on timeoffcode timeoffcode50 (cost=0.00..1.10 rows=10 width=16) (actual rows= loops=)

325. 0.000 0.000 ↓ 0.0

Index Scan using ixdtslsftimesheetid on dm_timesheetlist_facts dm_timesheetlist_facts51 (cost=0.29..0.31 rows=1 width=96) (actual rows= loops=)

  • Index Cond: (timesheetid = at_2.timesheetid)
326. 0.000 0.000 ↓ 0.0

Hash (cost=2.14..2.14 rows=1 width=4) (actual rows= loops=)

327. 0.000 0.000 ↓ 0.0

Index Only Scan using clients_pkey on clients cl (cost=0.12..2.14 rows=1 width=4) (actual rows= loops=)

328. 0.000 0.000 ↓ 0.0

Hash (cost=108.76..108.76 rows=774 width=16) (actual rows= loops=)

329. 0.000 0.000 ↓ 0.0

Hash Join (cost=40.88..108.76 rows=774 width=16) (actual rows= loops=)

  • Hash Cond: (ubrh.currencyid = exchangerate_5.fixedcurrencyid)
330. 0.000 0.000 ↓ 0.0

Hash Join (cost=38.45..89.89 rows=774 width=16) (actual rows= loops=)

  • Hash Cond: (uprh.userid = ubrh.userid)
331. 0.000 0.000 ↓ 0.0

Hash Join (cost=2.42..43.22 rows=774 width=8) (actual rows= loops=)

  • Hash Cond: (uprh.currencyid = exchangerate_4.fixedcurrencyid)
332. 0.000 0.000 ↓ 0.0

Seq Scan on userpayrollratehistory uprh (cost=0.00..24.35 rows=774 width=8) (actual rows= loops=)

  • Filter: ((('now'::cstring)::date >= effectivedate) AND (('now'::cstring)::date <= enddate))
333. 0.000 0.000 ↓ 0.0

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

334. 0.000 0.000 ↓ 0.0

Index Scan using uix3er_currencyideffectivedate on exchangerate exchangerate_4 (cost=0.14..2.34 rows=7 width=4) (actual rows= loops=)

  • Index Cond: ((variablecurrencyid = $14) AND (('now'::cstring)::date >= effectivedate))
  • Filter: (('now'::cstring)::date <= enddate)
335. 0.000 0.000 ↓ 0.0

Hash (cost=26.35..26.35 rows=774 width=8) (actual rows= loops=)

336. 0.000 0.000 ↓ 0.0

Seq Scan on userbillingratehistory ubrh (cost=0.00..26.35 rows=774 width=8) (actual rows= loops=)

  • Filter: ((('now'::cstring)::date >= effectivedate) AND (('now'::cstring)::date <= enddate))
337. 0.000 0.000 ↓ 0.0

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

338. 0.000 0.000 ↓ 0.0

Index Scan using uix3er_currencyideffectivedate on exchangerate exchangerate_5 (cost=0.14..2.34 rows=7 width=4) (actual rows= loops=)

  • Index Cond: ((variablecurrencyid = $15) AND (('now'::cstring)::date >= effectivedate))
  • Filter: (('now'::cstring)::date <= enddate)
339. 0.000 0.000 ↓ 0.0

Hash (cost=40,821.65..40,821.65 rows=407,409 width=20) (actual rows= loops=)

340. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=3.19..40,821.65 rows=407,409 width=20) (actual rows= loops=)

  • Hash Cond: (pbrh.currencyid = currencyinfo57.id)
341. 0.000 0.000 ↓ 0.0

Hash Join (cost=2.04..39,103.55 rows=407,409 width=20) (actual rows= loops=)

  • Hash Cond: (dm_attendancetimeallocation_facts.billingrateid = br.id)
342. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.99..38,261.52 rows=170,022 width=52) (actual rows= loops=)

343. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.70..23,310.25 rows=24,007 width=60) (actual rows= loops=)

344. 0.000 0.000 ↓ 0.0

Seq Scan on projectbillingrate pbr (cost=0.00..25.02 rows=801 width=40) (actual rows= loops=)

  • Filter: ((billingrateid = $16) OR ((billingrateid <> $17) AND (userid IS NULL)))
345. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.70..29.06 rows=1 width=64) (actual rows= loops=)

346. 0.000 0.000 ↓ 0.0

Index Scan using ixpbrhprojectbillingrateid on projectbillingratehistory pbrh (cost=0.28..0.32 rows=1 width=28) (actual rows= loops=)

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

Index Scan using ixata2projectid on dm_attendancetimeallocation_facts (cost=0.42..28.73 rows=1 width=44) (actual rows= loops=)

  • Index Cond: ((projectid = pbr.projectid) AND (entrydate >= pbrh.effectivedate) AND (entrydate <= pbrh.enddate))
  • Filter: ((pbr.billingrateid = billingrateid) AND (((pbr.billingrateid = $16) AND (userid = pbr.userid)) OR ((pbr.billingrateid <> $17) AND (pbr.userid IS NULL))))
348. 0.000 0.000 ↓ 0.0

Index Only Scan using ixtsuseridstartdateenddate on timesheet dmvts (cost=0.29..0.56 rows=6 width=12) (actual rows= loops=)

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

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

350. 0.000 0.000 ↓ 0.0

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

351. 0.000 0.000 ↓ 0.0

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

352. 0.000 0.000 ↓ 0.0

Seq Scan on currencyinfo currencyinfo57 (cost=0.00..1.07 rows=7 width=4) (actual rows= loops=)

353.          

SubPlan (for Hash Left Join)

354. 0.000 0.000 ↓ 0.0

Sort (cost=5.80..5.81 rows=4 width=16) (actual rows= loops=)

  • Sort Key: dfh.depth
355. 0.000 0.000 ↓ 0.0

Hash Join (cost=2.40..5.76 rows=4 width=16) (actual rows= loops=)

  • Hash Cond: (dept.id = dfh.parentid)
356. 0.000 0.000 ↓ 0.0

Seq Scan on departments dept (cost=0.00..3.07 rows=107 width=16) (actual rows= loops=)

357. 0.000 0.000 ↓ 0.0

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

358. 0.000 0.000 ↓ 0.0

Index Scan using ixdfhchildid on departmentflathierarchy dfh (cost=0.27..2.35 rows=4 width=8) (actual rows= loops=)

  • Index Cond: (childid = departments.id)
359. 0.000 0.000 ↓ 0.0

Index Scan using dm_userworkschedule_facts_pkey on dm_userworkschedule_facts dm_userworkschedule_facts46 (cost=0.43..2.45 rows=1 width=16) (actual rows= loops=)

  • Index Cond: ((userid = at_2.userid) AND (date = at_2.entrydate))