explain.depesz.com

PostgreSQL's explain analyze made readable

Result: BEuc

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

Sort (cost=161,844,364.14..161,844,380.40 rows=6,505 width=1,970) (actual rows= loops=)

  • Sort Key: dmv_timesheetday_facts31.entrydate2, ((cl.name)::character varying(255)) COLLATE "en_US", ((cl.code)::character varying(50)) COLLATE "en_US", ((pj.name)::character varying(255)) COLLATE "en_US", ((pj.code)::character varying(50)) COLLATE "en_US", ((tk.name)::character varying(255)) COLLATE "en_US", ((activities35.name)::character varying(50)) COLLATE "en_US", dmv_timesheetday_facts31.comments3 COLLATE "en_US
2.          

CTE dmv_timesheetday_facts0cte

3. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=161,622,478.09..161,691,521.03 rows=1,841,145 width=104) (actual rows= loops=)

  • Group Key: ts.userid, at.entrydate, (upper(at.comments)), (CASE WHEN (pj_1.clientbillingallocationmethod = 0) THEN pc.clientid ELSE at.userspecifiedclientid END), at.projectid, at.taskid, at.activityid
4. 0.000 0.000 ↓ 0.0

Sort (cost=161,622,478.09..161,627,080.95 rows=1,841,145 width=107) (actual rows= loops=)

  • Sort Key: ts.userid, at.entrydate, (upper(at.comments)), (CASE WHEN (pj_1.clientbillingallocationmethod = 0) THEN pc.clientid ELSE at.userspecifiedclientid END), at.projectid, at.taskid, at.activityid
5. 0.000 0.000 ↓ 0.0

Nested Loop (cost=68,924.94..161,430,886.96 rows=1,841,145 width=107) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Hash Join (cost=68,924.51..1,672,490.49 rows=1,963,875 width=91) (actual rows= loops=)

  • Hash Cond: (at.timesheetid = ts.id)
7. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=54,909.98..1,623,574.63 rows=2,764,455 width=619) (actual rows= loops=)

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

Hash Left Join (cost=22,487.72..115,924.70 rows=2,764,455 width=124) (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))
9. 0.000 0.000 ↓ 0.0

Seq Scan on dm_attendancetimeallocation_facts at (cost=0.00..72,703.55 rows=2,764,455 width=124) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Hash (cost=22,487.71..22,487.71 rows=1 width=16) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.42..22,487.71 rows=1 width=16) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

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

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

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

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

Hash (cost=30,130.98..30,130.98 rows=183,302 width=52) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Hash Join (cost=25,133.53..30,130.98 rows=183,302 width=52) (actual rows= loops=)

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

Seq Scan on projectclient pc (cost=0.00..4,516.27 rows=183,302 width=48) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Hash (cost=22,486.26..22,486.26 rows=211,781 width=8) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_1 (cost=0.00..22,486.26 rows=211,781 width=8) (actual rows= loops=)

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

Hash (cost=10,931.04..10,931.04 rows=246,679 width=20) (actual rows= loops=)

20. 0.000 0.000 ↓ 0.0

Seq Scan on timesheet ts (cost=0.00..10,931.04 rows=246,679 width=20) (actual rows= loops=)

  • Filter: ((startdate >= '2019-05-01'::date) AND (startdate <= '2020-05-01'::date) AND (enddate >= '2019-05-01'::date) AND (enddate <= '2020-05-01'::date))
21. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (id = at.id)
  • Filter: ((userid = 3,629) OR (SubPlan 1) OR (SubPlan 2) OR (SubPlan 3) OR (SubPlan 4))
22.          

SubPlan (for Index Scan)

23. 0.000 0.000 ↓ 0.0

Nested Loop (cost=11.97..20.09 rows=1 width=32) (actual rows= loops=)

  • Join Filter: (tsapprovalrequestkeyvalue3.parentid = tsapprovalrequestkeyvalue7.id)
24. 0.000 0.000 ↓ 0.0

Nested Loop (cost=11.83..17.91 rows=1 width=48) (actual rows= loops=)

  • Join Filter: (tsapprovalrequest6.id = tsapprovalrequestkeyvalue3.tsapprovalrequestid)
25. 0.000 0.000 ↓ 0.0

Nested Loop (cost=11.68..15.74 rows=1 width=4) (actual rows= loops=)

  • Join Filter: (timesheetapprovalnodes5.id = tsapprovalrequest6.nodeid)
26. 0.000 0.000 ↓ 0.0

Nested Loop (cost=11.68..14.72 rows=1 width=16) (actual rows= loops=)

27. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (id = ttendancetimeallocation_facts2.timesheetid)
28. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on timesheetapprovalnodes timesheetapprovalnodes5 (cost=11.26..12.27 rows=1 width=32) (actual rows= loops=)

  • Recheck Cond: (timesheetid = ttendancetimeallocation_facts2.timesheetid)
29. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtantimesheetid (cost=0.00..11.26 rows=1 width=0) (actual rows= loops=)

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

Seq Scan on tsapprovalrequest tsapprovalrequest6 (cost=0.00..1.00 rows=1 width=20) (actual rows= loops=)

  • Filter: (userid = 3,629)
31. 0.000 0.000 ↓ 0.0

Index Scan using ixtsarkvkey on tsapprovalrequestkeyvalue tsapprovalrequestkeyvalue3 (cost=0.14..2.16 rows=1 width=52) (actual rows= loops=)

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

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

  • Index Cond: (parentid IS NULL)
33. 0.000 0.000 ↓ 0.0

Nested Loop (cost=16.73..32.05 rows=1 width=32) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Nested Loop (cost=16.17..31.37 rows=1 width=16) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

Nested Loop (cost=15.61..26.73 rows=1 width=16) (actual rows= loops=)

36. 0.000 0.000 ↓ 0.0

Nested Loop (cost=15.05..26.06 rows=1 width=16) (actual rows= loops=)

37. 0.000 0.000 ↓ 0.0

Nested Loop (cost=14.49..24.67 rows=1 width=16) (actual rows= loops=)

38. 0.000 0.000 ↓ 0.0

Nested Loop (cost=13.93..20.04 rows=1 width=16) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

Nested Loop (cost=13.37..17.44 rows=1 width=16) (actual rows= loops=)

40. 0.000 0.000 ↓ 0.0

Nested Loop (cost=4.20..7.25 rows=1 width=16) (actual rows= loops=)

41. 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_facts2.timesheetid)
42. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on timesheetapprovalhistory timesheetapprovalhistory10 (cost=3.78..4.80 rows=1 width=32) (actual rows= loops=)

  • Recheck Cond: ((timesheetid = ttendancetimeallocation_facts2.timesheetid) AND (userid = 3,629))
43. 0.000 0.000 ↓ 0.0

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

44. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtah2timesheetid (cost=0.00..1.48 rows=7 width=0) (actual rows= loops=)

  • Index Cond: (timesheetid = ttendancetimeallocation_facts2.timesheetid)
45. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtahuserid (cost=0.00..2.05 rows=83 width=0) (actual rows= loops=)

  • Index Cond: (userid = 3,629)
46. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue11 (cost=9.17..10.19 rows=1 width=32) (actual rows= loops=)

  • Recheck Cond: ((timesheetapprovalhistoryid = timesheetapprovalhistory10.id) AND (upper(uri) = 'URN:REPLICON-TENANT:1B8A55AA5F704DEA918923FE2DAF8CDA:USER:3,629'::text))
  • Filter: (upper(key) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:REMOVED-APPROVAL-REQUEST-NODES'::text)
47. 0.000 0.000 ↓ 0.0

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

48. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtahkvtimesheetapprovalhistoryid (cost=0.00..1.77 rows=28 width=0) (actual rows= loops=)

  • Index Cond: (timesheetapprovalhistoryid = timesheetapprovalhistory10.id)
49. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtahkvuri (cost=0.00..7.09 rows=321 width=0) (actual rows= loops=)

  • Index Cond: (upper(uri) = 'URN:REPLICON-TENANT:1B8A55AA5F704DEA918923FE2DAF8CDA:USER:3,629'::text)
50. 0.000 0.000 ↓ 0.0

Index Scan using timesheetapprovalhistorykeyvalue_pkey on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue12 (cost=0.56..2.58 rows=1 width=32) (actual rows= loops=)

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

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue13 (cost=0.56..4.62 rows=1 width=32) (actual rows= loops=)

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

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue14 (cost=0.56..1.36 rows=3 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue13.id)
53. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue15 (cost=0.56..0.66 rows=1 width=32) (actual rows= loops=)

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

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue16 (cost=0.56..4.61 rows=3 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue15.id)
55. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue esheetapprovalhistorykeyvalue8 (cost=0.56..0.65 rows=3 width=93) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue16.id)
56. 0.000 0.000 ↓ 0.0

Nested Loop (cost=11.97..20.09 rows=1 width=32) (actual rows= loops=)

  • Join Filter: (tsapprovalrequestkeyvalue17.parentid = tsapprovalrequestkeyvalue21.id)
57. 0.000 0.000 ↓ 0.0

Nested Loop (cost=11.83..17.91 rows=1 width=48) (actual rows= loops=)

  • Join Filter: (tsapprovalrequest20.id = tsapprovalrequestkeyvalue17.tsapprovalrequestid)
58. 0.000 0.000 ↓ 0.0

Nested Loop (cost=11.68..15.74 rows=1 width=4) (actual rows= loops=)

  • Join Filter: (timesheetapprovalnodes19.id = tsapprovalrequest20.nodeid)
59. 0.000 0.000 ↓ 0.0

Nested Loop (cost=11.68..14.72 rows=1 width=16) (actual rows= loops=)

60. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (id = ttendancetimeallocation_facts2.timesheetid)
61. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on timesheetapprovalnodes timesheetapprovalnodes19 (cost=11.26..12.27 rows=1 width=32) (actual rows= loops=)

  • Recheck Cond: (timesheetid = ttendancetimeallocation_facts2.timesheetid)
62. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtantimesheetid (cost=0.00..11.26 rows=1 width=0) (actual rows= loops=)

  • Index Cond: (timesheetid = ttendancetimeallocation_facts2.timesheetid)
63. 0.000 0.000 ↓ 0.0

Seq Scan on tsapprovalrequest tsapprovalrequest20 (cost=0.00..1.00 rows=1 width=20) (actual rows= loops=)

  • Filter: (userid = 3,629)
64. 0.000 0.000 ↓ 0.0

Index Scan using ixtsarkvkey on tsapprovalrequestkeyvalue tsapprovalrequestkeyvalue17 (cost=0.14..2.16 rows=1 width=52) (actual rows= loops=)

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

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

  • Index Cond: (parentid IS NULL)
66. 0.000 0.000 ↓ 0.0

Nested Loop (cost=16.73..32.05 rows=1 width=32) (actual rows= loops=)

67. 0.000 0.000 ↓ 0.0

Nested Loop (cost=16.17..31.37 rows=1 width=16) (actual rows= loops=)

68. 0.000 0.000 ↓ 0.0

Nested Loop (cost=15.61..26.73 rows=1 width=16) (actual rows= loops=)

69. 0.000 0.000 ↓ 0.0

Nested Loop (cost=15.05..26.06 rows=1 width=16) (actual rows= loops=)

70. 0.000 0.000 ↓ 0.0

Nested Loop (cost=14.49..24.67 rows=1 width=16) (actual rows= loops=)

71. 0.000 0.000 ↓ 0.0

Nested Loop (cost=13.93..20.04 rows=1 width=16) (actual rows= loops=)

72. 0.000 0.000 ↓ 0.0

Nested Loop (cost=13.37..17.44 rows=1 width=16) (actual rows= loops=)

73. 0.000 0.000 ↓ 0.0

Nested Loop (cost=4.20..7.25 rows=1 width=16) (actual rows= loops=)

74. 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_facts2.timesheetid)
75. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on timesheetapprovalhistory timesheetapprovalhistory24 (cost=3.78..4.80 rows=1 width=32) (actual rows= loops=)

  • Recheck Cond: ((timesheetid = ttendancetimeallocation_facts2.timesheetid) AND (userid = 3,629))
76. 0.000 0.000 ↓ 0.0

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

77. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtah2timesheetid (cost=0.00..1.48 rows=7 width=0) (actual rows= loops=)

  • Index Cond: (timesheetid = ttendancetimeallocation_facts2.timesheetid)
78. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtahuserid (cost=0.00..2.05 rows=83 width=0) (actual rows= loops=)

  • Index Cond: (userid = 3,629)
79. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue25 (cost=9.17..10.19 rows=1 width=32) (actual rows= loops=)

  • Recheck Cond: ((timesheetapprovalhistoryid = timesheetapprovalhistory24.id) AND (upper(uri) = 'URN:REPLICON-TENANT:1B8A55AA5F704DEA918923FE2DAF8CDA:USER:3,629'::text))
  • Filter: (upper(key) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:REMOVED-APPROVAL-REQUEST-NODES'::text)
80. 0.000 0.000 ↓ 0.0

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

81. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtahkvtimesheetapprovalhistoryid (cost=0.00..1.77 rows=28 width=0) (actual rows= loops=)

  • Index Cond: (timesheetapprovalhistoryid = timesheetapprovalhistory24.id)
82. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on ixtahkvuri (cost=0.00..7.09 rows=321 width=0) (actual rows= loops=)

  • Index Cond: (upper(uri) = 'URN:REPLICON-TENANT:1B8A55AA5F704DEA918923FE2DAF8CDA:USER:3,629'::text)
83. 0.000 0.000 ↓ 0.0

Index Scan using timesheetapprovalhistorykeyvalue_pkey on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue26 (cost=0.56..2.58 rows=1 width=32) (actual rows= loops=)

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

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue27 (cost=0.56..4.62 rows=1 width=32) (actual rows= loops=)

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

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue28 (cost=0.56..1.36 rows=3 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue27.id)
86. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue29 (cost=0.56..0.66 rows=1 width=32) (actual rows= loops=)

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

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue30 (cost=0.56..4.61 rows=3 width=32) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue29.id)
88. 0.000 0.000 ↓ 0.0

Index Scan using ixtahkvparentid on timesheetapprovalhistorykeyvalue sheetapprovalhistorykeyvalue22 (cost=0.56..0.65 rows=3 width=93) (actual rows= loops=)

  • Index Cond: (parentid = sheetapprovalhistorykeyvalue30.id)
89.          

Initplan (for Sort)

90. 0.000 0.000 ↓ 0.0

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

91. 0.000 0.000 ↓ 0.0

Hash Join (cost=63,655.02..152,430.10 rows=6,505 width=1,970) (actual rows= loops=)

  • Hash Cond: (dmv_timesheetday_facts31.userid1 = du.userid)
92. 0.000 0.000 ↓ 0.0

Hash Join (cost=63,650.84..145,457.13 rows=1,841,145 width=218) (actual rows= loops=)

  • Hash Cond: (dmv_timesheetday_facts31.userid1 = ui.id)
93. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=63,282.22..140,253.70 rows=1,841,145 width=214) (actual rows= loops=)

  • Hash Cond: (dmv_timesheetday_facts31.activityid7 = activities35.id)
94. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=63,280.59..135,316.64 rows=1,841,145 width=211) (actual rows= loops=)

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

Hash Left Join (cost=63,278.16..114,600.79 rows=1,841,145 width=215) (actual rows= loops=)

  • Hash Cond: (dmv_timesheetday_facts31.taskid6 = tk.id)
96. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=26,723.08..73,212.68 rows=1,841,145 width=174) (actual rows= loops=)

  • Hash Cond: (dmv_timesheetday_facts31.projectid5 = pj.id)
97. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,119.00..43,775.50 rows=1,841,145 width=105) (actual rows= loops=)

  • Hash Cond: (dmv_timesheetday_facts31.clientid4 = cl.id)
98. 0.000 0.000 ↓ 0.0

CTE Scan on dmv_timesheetday_facts0cte dmv_timesheetday_facts31 (cost=0.00..36,822.90 rows=1,841,145 width=72) (actual rows= loops=)

99. 0.000 0.000 ↓ 0.0

Hash (cost=1,682.89..1,682.89 rows=34,889 width=37) (actual rows= loops=)

100. 0.000 0.000 ↓ 0.0

Seq Scan on clients cl (cost=0.00..1,682.89 rows=34,889 width=37) (actual rows= loops=)

101. 0.000 0.000 ↓ 0.0

Hash (cost=21,956.81..21,956.81 rows=211,781 width=73) (actual rows= loops=)

102. 0.000 0.000 ↓ 0.0

Seq Scan on project pj (cost=0.00..21,956.81 rows=211,781 width=73) (actual rows= loops=)

103. 0.000 0.000 ↓ 0.0

Hash (cost=24,353.37..24,353.37 rows=976,137 width=45) (actual rows= loops=)

104. 0.000 0.000 ↓ 0.0

Seq Scan on task tk (cost=0.00..24,353.37 rows=976,137 width=45) (actual rows= loops=)

105. 0.000 0.000 ↓ 0.0

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

106. 0.000 0.000 ↓ 0.0

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

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

Hash (cost=1.28..1.28 rows=28 width=11) (actual rows= loops=)

108. 0.000 0.000 ↓ 0.0

Seq Scan on activities activities35 (cost=0.00..1.28 rows=28 width=11) (actual rows= loops=)

109. 0.000 0.000 ↓ 0.0

Hash (cost=227.10..227.10 rows=11,321 width=4) (actual rows= loops=)

110. 0.000 0.000 ↓ 0.0

Index Only Scan using userinfo_pkey on userinfo ui (cost=0.29..227.10 rows=11,321 width=4) (actual rows= loops=)

111. 0.000 0.000 ↓ 0.0

Hash (cost=3.69..3.69 rows=40 width=4) (actual rows= loops=)

112. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.57..3.69 rows=40 width=4) (actual rows= loops=)

113. 0.000 0.000 ↓ 0.0

Index Only Scan using departments_pkey on departments dep (cost=0.29..1.30 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (id = 1,131)
114. 0.000 0.000 ↓ 0.0

Index Only Scan using departmentusers_pkey on departmentusers du (cost=0.29..1.98 rows=40 width=8) (actual rows= loops=)

  • Index Cond: (departmentid = 1,131)