explain.depesz.com

PostgreSQL's explain analyze made readable

Result: gUno

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

Sort (cost=28,125,217.62..28,165,965.79 rows=16,299,268 width=4,611) (actual rows= loops=)

  • Sort Key: ((program.name)::character varying(255)) COLLATE "en_US", ((ui.lastname)::character varying(50)) COLLATE "en_US", ((ui.firstname)::character varying(50)) COLLATE "en_US", timeexpensecostbilling2_facts8.userduplicatename10, ((login.loginname)::character varying(255)) COLLATE "en_US", ((ui.displayname)::text) COLLATE "en_US", ((ui.externalid)::character varying(255)) COLLATE "en_US", timeexpensecostbilling2_facts8.entrydateincurreddate3, ((cl.name)::character varying(255)) COLLATE "en_US", ((userinfo11.displayname)::text) COLLATE "en_US", ((tk.info1)::character varying(255)) COLLATE "en_US", ((pj.name)::character varying(255)) COLLATE "en_US", ((pj.code)::character varying(50)) COLLATE "en_US", ((tdh.hierarchysorting)::text) COLLATE "en_US", ((tdh.hierarchytaskname)::text) COLLATE "en_US", ((tk.name)::character varying(255)) COLLATE "en_US", ((tk.code)::character varying(50)) COLLATE "en_US", timeexpensecostbilling2_facts8.billingratename4 COLLATE "en_US", ((currencyinfo15.symbol)::character varying(50)) COLLATE "en_US", timeexpensecostbilling2_facts8.hourlyrate5, ((userinfo16.displayname)::text) COLLATE "en_US
2.          

CTE eexpensecostbilling2_facts0cte

3. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=5,122,418.58..6,344,863.68 rows=16,299,268 width=261) (actual rows= loops=)

  • Group Key: timeexpensecostbilling2_facts0.entrydateincurreddate, (upper((timeexpensecostbilling2_facts0.billingratename)::text)), timeexpensecostbilling2_facts0.hourlyrate, (CASE WHEN ((timeexpensecostbilling2_facts0.timeentryinfo3)::text ~ '^\s*[-]?[0-9]+\.{0,1}[0-9]{0,}\s*$'::text) THEN (timeexpensecostbilling2_facts0.timeentryinfo3)::numeric ELSE NULL::numeric END), timeexpensecostbilling2_facts0.timeallocationid, (CASE WHEN ((timeexpensecostbilling2_facts0.timeentryinfo2)::text ~ '^\s*[-]?[0-9]+\.{0,1}[0-9]{0,}\s*$'::text) THEN (timeexpensecostbilling2_facts0.timeentryinfo2)::numeric ELSE NULL::numeric END), timeexpensecostbilling2_facts0.userid, ui_1.duplicatename, ts.enddate, "*SELECT* 1".expensestatus, tslist.timesheetstatus, timeexpensecostbilling2_facts0.projectid, timeexpensecostbilling2_facts0.taskid, timeexpensecostbilling2_facts0.currencyid
4. 0.000 0.000 ↓ 0.0

Sort (cost=5,122,418.58..5,163,166.75 rows=16,299,268 width=261) (actual rows= loops=)

  • Sort Key: timeexpensecostbilling2_facts0.entrydateincurreddate, (upper((timeexpensecostbilling2_facts0.billingratename)::text)), timeexpensecostbilling2_facts0.hourlyrate, (CASE WHEN ((timeexpensecostbilling2_facts0.timeentryinfo3)::text ~ '^\s*[-]?[0-9]+\.{0,1}[0-9]{0,}\s*$'::text) THEN (timeexpensecostbilling2_facts0.timeentryinfo3)::numeric ELSE NULL::numeric END), timeexpensecostbilling2_facts0.timeallocationid, (CASE WHEN ((timeexpensecostbilling2_facts0.timeentryinfo2)::text ~ '^\s*[-]?[0-9]+\.{0,1}[0-9]{0,}\s*$'::text) THEN (timeexpensecostbilling2_facts0.timeentryinfo2)::numeric ELSE NULL::numeric END), timeexpensecostbilling2_facts0.userid, ui_1.duplicatename, ts.enddate, "*SELECT* 1".expensestatus, tslist.timesheetstatus, timeexpensecostbilling2_facts0.projectid, timeexpensecostbilling2_facts0.taskid, timeexpensecostbilling2_facts0.currencyid
5. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=1,330,479.57..2,023,860.50 rows=16,299,268 width=261) (actual rows= loops=)

  • Merge Cond: (timeexpensecostbilling2_facts0.expenseid = "*SELECT* 1".expenseid)
  • Filter: ((tslist.timesheetstatus = ANY ('{0,1,2,4}'::integer[])) OR ("*SELECT* 1".expensestatus = ANY ('{0,1,2,4}'::integer[])))
6. 0.000 0.000 ↓ 0.0

Sort (cost=1,312,777.75..1,312,873.15 rows=38,163 width=229) (actual rows= loops=)

  • Sort Key: timeexpensecostbilling2_facts0.expenseid
7. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=221,009.64..1,309,873.56 rows=38,163 width=229) (actual rows= loops=)

  • Hash Cond: (timeexpensecostbilling2_facts0.userid = ui_1.id)
8. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=220,729.73..1,309,493.42 rows=38,163 width=228) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Hash Join (cost=220,728.89..1,261,185.18 rows=38,163 width=236) (actual rows= loops=)

  • Hash Cond: (timeexpensecostbilling2_facts0.projectid = project5.id)
10. 0.000 0.000 ↓ 0.0

Hash Join (cost=219,673.64..1,260,027.91 rows=38,848 width=240) (actual rows= loops=)

  • Hash Cond: (timeexpensecostbilling2_facts0.projectid = pj_1.id)
11. 0.000 0.000 ↓ 0.0

Subquery Scan on timeexpensecostbilling2_facts0 (cost=218,303.15..1,258,544.05 rows=43,172 width=236) (actual rows= loops=)

  • Filter: (((timeexpensecostbilling2_facts0.entrydatesheetdate >= '2020-01-01'::date) AND (timeexpensecostbilling2_facts0.entrydatesheetdate <= '2020-12-31'::date)) OR (timeexpensecostbilling2_facts0.entrydatesheetdate IS NULL))
12. 0.000 0.000 ↓ 0.0

Append (cost=218,303.15..1,193,623.57 rows=4,328,032 width=1,052) (actual rows= loops=)

13. 0.000 0.000 ↓ 0.0

Result (cost=218,303.15..1,193,589.55 rows=4,328,029 width=1,052) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Append (cost=218,303.15..1,128,669.12 rows=4,328,029 width=1,044) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=218,303.15..1,085,388.84 rows=4,328,028 width=1,414) (actual rows= loops=)

  • Hash Cond: ((at.projectid = ptm.projectid) AND (at.userid = ptm.userid) AND (at.entrydate = ptma.date))
16.          

Initplan (for Hash Left Join)

17. 0.000 0.000 ↓ 0.0

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

18. 0.000 0.000 ↓ 0.0

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

19. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=213,040.23..744,703.74 rows=4,328,028 width=754) (actual rows= loops=)

  • Hash Cond: (at.taskid = tk_1.id)
20. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=185,069.10..705,371.45 rows=4,328,028 width=750) (actual rows= loops=)

  • Hash Cond: (at.billingrateid = br.id)
21. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=184,894.64..693,829.52 rows=4,328,028 width=707) (actual rows= loops=)

  • Hash Cond: (pbr.id = pbrh.projectbillingrateid)
  • Join Filter: ((at.entrydate >= pbrh.effectivedate) AND (at.entrydate <= pbrh.enddate))
22. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=147,464.19..503,025.57 rows=4,328,028 width=710) (actual rows= loops=)

  • Hash Cond: (at.projectid = pj_2.id)
23. 0.000 0.000 ↓ 0.0

Hash Join (cost=146,447.34..490,643.37 rows=4,328,028 width=706) (actual rows= loops=)

  • Hash Cond: (at.timesheetid = ts_1.id)
24. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=131,488.36..464,268.60 rows=4,348,830 width=694) (actual rows= loops=)

  • Merge Cond: ((at.billingrateid = pbr.billingrateid) AND (at.projectid = pbr.projectid))
  • Join Filter: (((pbr.billingrateid = $3) AND (at.userid = pbr.userid)) OR ((pbr.billingrateid <> $4) AND (pbr.userid IS NULL)))
25. 0.000 0.000 ↓ 0.0

Index Scan using ixpta4billingrateid on dm_projecttimeallocation_facts at (cost=0.56..294,452.16 rows=4,348,830 width=678) (actual rows= loops=)

  • Filter: ((timeoffcodeid IS NULL) AND (duration <> '00:00:00'::interval))
26. 0.000 0.000 ↓ 0.0

Sort (cost=131,456.94..134,222.59 rows=1,106,260 width=40) (actual rows= loops=)

  • Sort Key: pbr.billingrateid, pbr.projectid
27. 0.000 0.000 ↓ 0.0

Seq Scan on projectbillingrate pbr (cost=0.00..20,403.60 rows=1,106,260 width=40) (actual rows= loops=)

28. 0.000 0.000 ↓ 0.0

Hash (cost=9,280.66..9,280.66 rows=454,266 width=28) (actual rows= loops=)

29. 0.000 0.000 ↓ 0.0

Seq Scan on timesheet ts_1 (cost=0.00..9,280.66 rows=454,266 width=28) (actual rows= loops=)

30. 0.000 0.000 ↓ 0.0

Hash (cost=880.82..880.82 rows=10,882 width=8) (actual rows= loops=)

31. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_2 (cost=0.00..880.82 rows=10,882 width=8) (actual rows= loops=)

32. 0.000 0.000 ↓ 0.0

Hash (cost=23,199.09..23,199.09 rows=1,138,509 width=33) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Seq Scan on projectbillingratehistory pbrh (cost=0.00..23,199.09 rows=1,138,509 width=33) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Hash (cost=110.87..110.87 rows=5,087 width=43) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

Seq Scan on billingrate br (cost=0.00..110.87 rows=5,087 width=43) (actual rows= loops=)

36. 0.000 0.000 ↓ 0.0

Hash (cost=20,412.17..20,412.17 rows=604,717 width=8) (actual rows= loops=)

37. 0.000 0.000 ↓ 0.0

Seq Scan on task tk_1 (cost=0.00..20,412.17 rows=604,717 width=8) (actual rows= loops=)

38. 0.000 0.000 ↓ 0.0

Hash (cost=5,144.38..5,144.38 rows=4,888 width=44) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.42..5,144.38 rows=4,888 width=44) (actual rows= loops=)

40. 0.000 0.000 ↓ 0.0

Seq Scan on projectteammemberallocation ptma (cost=0.00..99.88 rows=4,888 width=52) (actual rows= loops=)

41. 0.000 0.000 ↓ 0.0

Index Scan using projectteammember_pkey on projectteammember ptm (cost=0.42..1.03 rows=1 width=24) (actual rows= loops=)

  • Index Cond: (id = ptma.projectteammemberid)
42. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 2_1 (cost=0.00..0.00 rows=1 width=1,044) (actual rows= loops=)

43. 0.000 0.000 ↓ 0.0

Result (cost=0.00..0.00 rows=0 width=1,044) (actual rows= loops=)

  • One-Time Filter: false
44. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 3 (cost=1.01..1.01 rows=1 width=1,052) (actual rows= loops=)

45. 0.000 0.000 ↓ 0.0

Result (cost=1.01..1.01 rows=0 width=2,410) (actual rows= loops=)

  • One-Time Filter: false
46.          

Initplan (for Result)

47. 0.000 0.000 ↓ 0.0

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

48. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 4 (cost=0.00..0.01 rows=1 width=1,052) (actual rows= loops=)

49. 0.000 0.000 ↓ 0.0

Result (cost=0.00..0.00 rows=0 width=1,044) (actual rows= loops=)

  • One-Time Filter: false
50. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 5 (cost=33.00..33.01 rows=1 width=948) (actual rows= loops=)

51. 0.000 0.000 ↓ 0.0

Result (cost=33.00..33.00 rows=0 width=940) (actual rows= loops=)

  • One-Time Filter: false
52.          

Initplan (for Result)

53. 0.000 0.000 ↓ 0.0

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

54. 0.000 0.000 ↓ 0.0

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

55. 0.000 0.000 ↓ 0.0

Hash (cost=1,248.09..1,248.09 rows=9,792 width=4) (actual rows= loops=)

56. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_1 (cost=0.00..1,248.09 rows=9,792 width=4) (actual rows= loops=)

  • Filter: (programid = ANY ('{f076c3ac-cf53-4742-bdcd-29080928be6c,8450704b-b06e-466e-bb0f-a236933b39c1,ae24eb29-0a98-4d07-9a35-98ec6997594d,f2891d9f-2408-40ba-b86c-7f976b3f6166,87e47008-c4d6-4742-9c85-f2c65a36eea6,23865970-39c5-4590-ae8d-7ba7cc24d9af,44d24c65-e868-46fd-b01e-6b46ac0608d5,b9afb66b-1d1c-4363-958c-0e20fc7e69e4,dca0a06c-db2e-4aba-9da8-a917cb8259d5,2e957995-5164-4de4-a1e7-bb169f81c3f0,a64f167c-130e-413e-9119-4f5cb363fff1,3858f6ff-d893-4a29-9ab8-7f1cbfe14873,ab43879c-9045-4302-991b-948cb6b54652,3e03949c-ffea-4150-9ad7-0c37585f6e85,28f55cd2-fe9a-4842-9641-7442b04ef222,467c68b9-51da-49a6-b36f-876d77e3303f,85097994-2261-4f19-9654-3bf3853c468f,a40ba3d5-5fac-454e-baf3-c5d80ae0939d,1a691fca-7964-48b8-aab1-801096078eee,7869d9d2-598f-4f78-8254-a4fbd3a44ba9,e0e0f897-a2f8-4e75-a333-9cdbbf16941f,3c4dddf3-6fc0-4c32-b9ad-200e56d3c29d,e12d7544-009a-4f7a-8a57-25b6d6a4867d,2730b8bb-7ada-4af2-8458-bd904888a4e1,55d562fa-e689-44eb-a32a-61a2822c7c5a,150aa787-d9ee-41d8-8179-354749dd8e60,f210408d-ab03-49b8-a9f8-1e1aacd744bc}'::uuid[]))
57. 0.000 0.000 ↓ 0.0

Hash (cost=921.63..921.63 rows=10,690 width=4) (actual rows= loops=)

58. 0.000 0.000 ↓ 0.0

Seq Scan on project project5 (cost=0.00..921.63 rows=10,690 width=4) (actual rows= loops=)

  • Filter: (projectstatuslabelid = ANY ('{df8476a4-9582-4599-8309-3b7f07bd27a2,171e86e4-4cb3-477f-86a9-7f86d41147cf,3bbf6214-ea06-4044-8d23-558674d217f1}'::uuid[]))
59. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.84..1.26 rows=1 width=24) (actual rows= loops=)

60. 0.000 0.000 ↓ 0.0

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

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

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

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

Hash (cost=203.29..203.29 rows=6,129 width=5) (actual rows= loops=)

63. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo ui_1 (cost=0.00..203.29 rows=6,129 width=5) (actual rows= loops=)

64. 0.000 0.000 ↓ 0.0

Sort (cost=17,701.83..17,915.62 rows=85,518 width=8) (actual rows= loops=)

  • Sort Key: "*SELECT* 1".expenseid
65. 0.000 0.000 ↓ 0.0

Hash Join (cost=2,902.70..10,696.22 rows=85,518 width=8) (actual rows= loops=)

  • Hash Cond: ("*SELECT* 1".expenseid = ex.id)
66. 0.000 0.000 ↓ 0.0

Append (cost=3.07..7,572.10 rows=85,518 width=8) (actual rows= loops=)

67. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 1 (cost=3.07..7,569.04 rows=85,515 width=8) (actual rows= loops=)

68. 0.000 0.000 ↓ 0.0

Hash Anti Join (cost=3.07..6,713.89 rows=85,515 width=475) (actual rows= loops=)

  • Hash Cond: (dm_expenselist_facts.expenseid = dm_expenselist_realtime_facts.expenseid)
69. 0.000 0.000 ↓ 0.0

Seq Scan on dm_expenselist_facts (cost=0.00..5,631.18 rows=85,518 width=8) (actual rows= loops=)

70. 0.000 0.000 ↓ 0.0

Hash (cost=3.03..3.03 rows=3 width=4) (actual rows= loops=)

71. 0.000 0.000 ↓ 0.0

Seq Scan on dm_expenselist_realtime_facts (cost=0.00..3.03 rows=3 width=4) (actual rows= loops=)

72. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 2 (cost=0.00..3.06 rows=3 width=8) (actual rows= loops=)

73. 0.000 0.000 ↓ 0.0

Seq Scan on dm_expenselist_realtime_facts dm_expenselist_realtime_facts_1 (cost=0.00..3.03 rows=3 width=475) (actual rows= loops=)

  • Filter: (NOT deleted)
74. 0.000 0.000 ↓ 0.0

Hash (cost=1,827.20..1,827.20 rows=85,794 width=4) (actual rows= loops=)

75. 0.000 0.000 ↓ 0.0

Index Only Scan using expense_pkey on expense ex (cost=0.29..1,827.20 rows=85,794 width=4) (actual rows= loops=)

76.          

Initplan (for Sort)

77. 0.000 0.000 ↓ 0.0

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

78. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=74,347.33..1,363,822.86 rows=16,299,268 width=4,611) (actual rows= loops=)

  • Hash Cond: (timeexpensecostbilling2_facts8.currencyid16 = currencyinfo15.id)
79. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=74,346.17..1,320,129.48 rows=16,299,268 width=540) (actual rows= loops=)

  • Hash Cond: (timeexpensecostbilling2_facts8.taskid15 = tk.id)
80. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=2,547.49..1,024,215.87 rows=16,299,268 width=432) (actual rows= loops=)

  • Hash Cond: (ui.id = userhierarchy17.userid)
81. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,887.47..588,702.59 rows=16,299,268 width=416) (actual rows= loops=)

  • Hash Cond: (pj.projectleaderapproverid = userinfo11.id)
82. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,607.57..545,609.42 rows=16,299,268 width=404) (actual rows= loops=)

  • Hash Cond: (pj.clientid = cl.id)
83. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,574.00..502,443.37 rows=16,299,268 width=381) (actual rows= loops=)

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

Hash Left Join (cost=1,298.85..459,353.10 rows=16,299,268 width=367) (actual rows= loops=)

  • Hash Cond: (timeexpensecostbilling2_facts8.userid9 = ui.id)
85. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=1,018.95..416,258.04 rows=16,299,268 width=320) (actual rows= loops=)

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

Hash Left Join (cost=1,016.85..369,804.45 rows=16,299,268 width=308) (actual rows= loops=)

  • Hash Cond: (timeexpensecostbilling2_facts8.projectid14 = pj.id)
87. 0.000 0.000 ↓ 0.0

CTE Scan on eexpensecostbilling2_facts0cte timeexpensecostbilling2_facts8 (cost=0.00..325,985.36 rows=16,299,268 width=229) (actual rows= loops=)

88. 0.000 0.000 ↓ 0.0

Hash (cost=880.82..880.82 rows=10,882 width=83) (actual rows= loops=)

89. 0.000 0.000 ↓ 0.0

Seq Scan on project pj (cost=0.00..880.82 rows=10,882 width=83) (actual rows= loops=)

90. 0.000 0.000 ↓ 0.0

Hash (cost=1.49..1.49 rows=49 width=28) (actual rows= loops=)

91. 0.000 0.000 ↓ 0.0

Seq Scan on program (cost=0.00..1.49 rows=49 width=28) (actual rows= loops=)

92. 0.000 0.000 ↓ 0.0

Hash (cost=203.29..203.29 rows=6,129 width=47) (actual rows= loops=)

93. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo ui (cost=0.00..203.29 rows=6,129 width=47) (actual rows= loops=)

94. 0.000 0.000 ↓ 0.0

Hash (cost=198.40..198.40 rows=6,140 width=18) (actual rows= loops=)

95. 0.000 0.000 ↓ 0.0

Seq Scan on login (cost=0.00..198.40 rows=6,140 width=18) (actual rows= loops=)

96. 0.000 0.000 ↓ 0.0

Hash (cost=27.14..27.14 rows=514 width=27) (actual rows= loops=)

97. 0.000 0.000 ↓ 0.0

Seq Scan on clients cl (cost=0.00..27.14 rows=514 width=27) (actual rows= loops=)

98. 0.000 0.000 ↓ 0.0

Hash (cost=203.29..203.29 rows=6,129 width=20) (actual rows= loops=)

99. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo userinfo11 (cost=0.00..203.29 rows=6,129 width=20) (actual rows= loops=)

100. 0.000 0.000 ↓ 0.0

Hash (cost=589.70..589.70 rows=5,626 width=20) (actual rows= loops=)

101. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=279.90..589.70 rows=5,626 width=20) (actual rows= loops=)

  • Hash Cond: (userhierarchy17.supervisorid = userinfo16.id)
102. 0.000 0.000 ↓ 0.0

Seq Scan on userhierarchy userhierarchy17 (cost=0.00..295.02 rows=5,626 width=8) (actual rows= loops=)

  • Filter: (('2020-06-22'::date >= startdate) AND ('2020-06-22'::date <= enddate))
103. 0.000 0.000 ↓ 0.0

Hash (cost=203.29..203.29 rows=6,129 width=20) (actual rows= loops=)

104. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo userinfo16 (cost=0.00..203.29 rows=6,129 width=20) (actual rows= loops=)

105. 0.000 0.000 ↓ 0.0

Hash (cost=64,239.71..64,239.71 rows=604,717 width=112) (actual rows= loops=)

106. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=31,686.30..64,239.71 rows=604,717 width=112) (actual rows= loops=)

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

Hash Left Join (cost=2.44..30,968.45 rows=604,717 width=59) (actual rows= loops=)

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

Seq Scan on task tk (cost=0.00..20,412.17 rows=604,717 width=63) (actual rows= loops=)

109. 0.000 0.000 ↓ 0.0

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

110. 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))
111. 0.000 0.000 ↓ 0.0

Hash (cost=24,102.83..24,102.83 rows=606,483 width=57) (actual rows= loops=)

112. 0.000 0.000 ↓ 0.0

Seq Scan on taskdenormalizedhierarchy tdh (cost=0.00..24,102.83 rows=606,483 width=57) (actual rows= loops=)

113. 0.000 0.000 ↓ 0.0

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

114. 0.000 0.000 ↓ 0.0

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