explain.depesz.com

PostgreSQL's explain analyze made readable

Result: wLIv

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

Sort (cost=21,684,494.86..21,713,745.16 rows=11,700,122 width=5,087) (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.userduplicatename8, ((login.loginname)::character varying(255)) COLLATE "en_US", ((ui.displayname)::text) COLLATE "en_US", ((ui.externalid)::character varying(255)) COLLATE "en_US", ((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.billingratename3 COLLATE "en_US", ((currencyinfo15.symbol)::character varying(50)) COLLATE "en_US", timeexpensecostbilling2_facts8.hourlyrate4, ((userinfo16.displayname)::text) COLLATE "en_US", ((tk.info19)::character varying(255)) COLLATE "en_US
2.          

CTE eexpensecostbilling2_facts0cte

3. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=3,953,996.86..4,685,254.49 rows=11,700,122 width=221) (actual rows= loops=)

  • Group Key: (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, 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=3,953,996.86..3,983,247.17 rows=11,700,122 width=221) (actual rows= loops=)

  • Sort Key: (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, 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,460,309.55..1,871,995.35 rows=11,700,122 width=221) (actual rows= loops=)

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

Sort (cost=1,442,346.66..1,442,428.64 rows=32,789 width=189) (actual rows= loops=)

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

Hash Left Join (cost=256,647.96..1,439,887.34 rows=32,789 width=189) (actual rows= loops=)

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

Nested Loop Left Join (cost=256,286.44..1,439,439.69 rows=32,789 width=188) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Hash Join (cost=256,285.60..1,399,839.11 rows=32,789 width=196) (actual rows= loops=)

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

Hash Join (cost=254,750.95..1,398,217.10 rows=33,270 width=200) (actual rows= loops=)

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

Subquery Scan on timeexpensecostbilling2_facts0 (cost=252,804.24..1,396,149.56 rows=46,023 width=196) (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=252,804.24..1,326,942.02 rows=4,613,836 width=1,052) (actual rows= loops=)

13. 0.000 0.000 ↓ 0.0

Result (cost=252,804.24..1,326,938.98 rows=4,613,833 width=1,052) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Append (cost=252,804.24..1,257,731.48 rows=4,613,833 width=1,044) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=252,804.24..1,211,593.16 rows=4,613,832 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..1.01 rows=1 width=16) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

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

19. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=246,825.55..848,042.48 rows=4,613,832 width=754) (actual rows= loops=)

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

Hash Left Join (cost=194,591.59..783,697.14 rows=4,613,832 width=750) (actual rows= loops=)

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

Hash Left Join (cost=194,397.52..771,385.54 rows=4,613,832 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=155,193.97..533,774.70 rows=4,613,832 width=710) (actual rows= loops=)

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

Hash Join (cost=153,709.65..520,175.54 rows=4,613,832 width=706) (actual rows= loops=)

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

Merge Left Join (cost=137,598.26..491,902.20 rows=4,633,079 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..312,887.08 rows=4,633,079 width=678) (actual rows= loops=)

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

Sort (cost=137,570.00..140,457.73 rows=1,155,090 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..21,254.90 rows=1,155,090 width=40) (actual rows= loops=)

28. 0.000 0.000 ↓ 0.0

Hash (cost=10,062.84..10,062.84 rows=483,884 width=28) (actual rows= loops=)

29. 0.000 0.000 ↓ 0.0

Seq Scan on timesheet ts_1 (cost=0.00..10,062.84 rows=483,884 width=28) (actual rows= loops=)

30. 0.000 0.000 ↓ 0.0

Hash (cost=1,308.03..1,308.03 rows=14,103 width=8) (actual rows= loops=)

31. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_2 (cost=0.00..1,308.03 rows=14,103 width=8) (actual rows= loops=)

32. 0.000 0.000 ↓ 0.0

Hash (cost=24,281.02..24,281.02 rows=1,193,802 width=33) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Seq Scan on projectbillingratehistory pbrh (cost=0.00..24,281.02 rows=1,193,802 width=33) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Hash (cost=122.92..122.92 rows=5,692 width=43) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

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

36. 0.000 0.000 ↓ 0.0

Hash (cost=43,653.43..43,653.43 rows=686,443 width=8) (actual rows= loops=)

37. 0.000 0.000 ↓ 0.0

Seq Scan on task tk_1 (cost=0.00..43,653.43 rows=686,443 width=8) (actual rows= loops=)

38. 0.000 0.000 ↓ 0.0

Hash (cost=5,892.01..5,892.01 rows=4,838 width=44) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

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

40. 0.000 0.000 ↓ 0.0

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

41. 0.000 0.000 ↓ 0.0

Index Scan using projectteammember_pkey on projectteammember ptm (cost=0.42..1.20 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=2.02..2.02 rows=1 width=948) (actual rows= loops=)

51. 0.000 0.000 ↓ 0.0

Result (cost=2.02..2.02 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..1.01 rows=1 width=16) (actual rows= loops=)

54. 0.000 0.000 ↓ 0.0

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

55. 0.000 0.000 ↓ 0.0

Hash (cost=1,819.26..1,819.26 rows=10,195 width=4) (actual rows= loops=)

56. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_1 (cost=0.00..1,819.26 rows=10,195 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,e9d6fb90-a2e8-4e9c-99de-88e706507ccb,e0e0f897-a2f8-4e75-a333-9cdbbf16941f,3c4dddf3-6fc0-4c32-b9ad-200e56d3c29d,e12d7544-009a-4f7a-8a57-25b6d6a4867d,2730b8bb-7ada-4af2-8458-bd904888a4e1,e9490086-6ce0-4af0-8c88-0c944eeec13c,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=1,360.92..1,360.92 rows=13,899 width=4) (actual rows= loops=)

58. 0.000 0.000 ↓ 0.0

Seq Scan on project project5 (cost=0.00..1,360.92 rows=13,899 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.20 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.61 rows=1 width=20) (actual rows= loops=)

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

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

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

Hash (cost=276.23..276.23 rows=6,823 width=5) (actual rows= loops=)

63. 0.000 0.000 ↓ 0.0

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

64. 0.000 0.000 ↓ 0.0

Sort (cost=17,962.89..18,187.44 rows=89,823 width=8) (actual rows= loops=)

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

Hash Join (cost=2,614.50..10,572.79 rows=89,823 width=8) (actual rows= loops=)

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

Append (cost=7.56..7,730.05 rows=89,823 width=8) (actual rows= loops=)

67. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 1 (cost=7.56..7,713.79 rows=89,810 width=8) (actual rows= loops=)

68. 0.000 0.000 ↓ 0.0

Hash Anti Join (cost=7.56..6,815.69 rows=89,810 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,674.23 rows=89,823 width=8) (actual rows= loops=)

70. 0.000 0.000 ↓ 0.0

Hash (cost=7.40..7.40 rows=13 width=4) (actual rows= loops=)

71. 0.000 0.000 ↓ 0.0

Index Only Scan using dm_expenselist_realtime_facts_pkey on dm_expenselist_realtime_facts (cost=0.14..7.40 rows=13 width=4) (actual rows= loops=)

72. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 2 (cost=0.00..16.26 rows=13 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..16.13 rows=13 width=475) (actual rows= loops=)

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

Hash (cost=1,539.83..1,539.83 rows=85,369 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,539.83 rows=85,369 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=106,894.88..1,023,341.85 rows=11,700,122 width=5,087) (actual rows= loops=)

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

Hash Left Join (cost=106,893.72..991,977.05 rows=11,700,122 width=507) (actual rows= loops=)

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

Hash Left Join (cost=3,338.30..727,544.95 rows=11,700,122 width=394) (actual rows= loops=)

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

Hash Left Join (cost=2,588.75..423,767.73 rows=11,700,122 width=377) (actual rows= loops=)

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

Hash Left Join (cost=2,227.23..392,675.24 rows=11,700,122 width=364) (actual rows= loops=)

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

Hash Left Join (cost=2,193.71..361,677.98 rows=11,700,122 width=341) (actual rows= loops=)

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

Hash Left Join (cost=1,847.96..330,600.33 rows=11,700,122 width=327) (actual rows= loops=)

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

Hash Left Join (cost=1,486.44..299,506.91 rows=11,700,122 width=279) (actual rows= loops=)

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

Hash Left Join (cost=1,484.32..266,208.81 rows=11,700,122 width=267) (actual rows= loops=)

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

CTE Scan on eexpensecostbilling2_facts0cte timeexpensecostbilling2_facts8 (cost=0.00..234,002.44 rows=11,700,122 width=189) (actual rows= loops=)

88. 0.000 0.000 ↓ 0.0

Hash (cost=1,308.03..1,308.03 rows=14,103 width=82) (actual rows= loops=)

89. 0.000 0.000 ↓ 0.0

Seq Scan on project pj (cost=0.00..1,308.03 rows=14,103 width=82) (actual rows= loops=)

90. 0.000 0.000 ↓ 0.0

Hash (cost=1.50..1.50 rows=50 width=28) (actual rows= loops=)

91. 0.000 0.000 ↓ 0.0

Seq Scan on program (cost=0.00..1.50 rows=50 width=28) (actual rows= loops=)

92. 0.000 0.000 ↓ 0.0

Hash (cost=276.23..276.23 rows=6,823 width=48) (actual rows= loops=)

93. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo ui (cost=0.00..276.23 rows=6,823 width=48) (actual rows= loops=)

94. 0.000 0.000 ↓ 0.0

Hash (cost=260.89..260.89 rows=6,789 width=18) (actual rows= loops=)

95. 0.000 0.000 ↓ 0.0

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

96. 0.000 0.000 ↓ 0.0

Hash (cost=27.12..27.12 rows=512 width=27) (actual rows= loops=)

97. 0.000 0.000 ↓ 0.0

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

98. 0.000 0.000 ↓ 0.0

Hash (cost=276.23..276.23 rows=6,823 width=21) (actual rows= loops=)

99. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo userinfo11 (cost=0.00..276.23 rows=6,823 width=21) (actual rows= loops=)

100. 0.000 0.000 ↓ 0.0

Hash (cost=677.91..677.91 rows=5,731 width=21) (actual rows= loops=)

101. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=361.52..677.91 rows=5,731 width=21) (actual rows= loops=)

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

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

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

Hash (cost=276.23..276.23 rows=6,823 width=21) (actual rows= loops=)

104. 0.000 0.000 ↓ 0.0

Seq Scan on userinfo userinfo16 (cost=0.00..276.23 rows=6,823 width=21) (actual rows= loops=)

105. 0.000 0.000 ↓ 0.0

Hash (cost=94,974.89..94,974.89 rows=686,443 width=117) (actual rows= loops=)

106. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=37,856.21..94,974.89 rows=686,443 width=117) (actual rows= loops=)

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

Hash Left Join (cost=2.44..55,319.19 rows=686,443 width=63) (actual rows= loops=)

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

Seq Scan on task tk (cost=0.00..43,653.43 rows=686,443 width=67) (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=29,290.01..29,290.01 rows=685,101 width=58) (actual rows= loops=)

112. 0.000 0.000 ↓ 0.0

Seq Scan on taskdenormalizedhierarchy tdh (cost=0.00..29,290.01 rows=685,101 width=58) (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=)