explain.depesz.com

PostgreSQL's explain analyze made readable

Result: ZLI8 : 06:18:05.220 -0600 Skyline

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

Sort (cost=638,204.64..638,204.65 rows=1 width=2,555) (actual rows= loops=)

  • Sort Key: ((cl.name)::character varying(255)) COLLATE "en_US", ((pj.name)::character varying(255)) COLLATE "en_US", ((tdh.hierarchysorting)::text) COLLATE "en_US", ((tdh.hierarchytaskname)::text) COLLATE "en_US", ((tk.name)::character varying(255)) COLLATE "en_US", imeexpensecostbilling2_facts13.entrydateincurreddate1, ((ui.lastname)::character varying(50)) COLLATE "en_US", ((ui.firstname)::character varying(50)) COLLATE "en_US", imeexpensecostbilling2_facts13.userduplicatename4, ((login.loginname)::character varying(255)) COLLATE "en_US", ((activities16.name)::character varying(50)) COLLATE "en_US", imeexpensecostbilling2_facts13.comments2 COLLATE "en_US", imeexpensecostbilling2_facts13.taskstatus5
2.          

CTE eexpensecostbilling2_facts0cte

3. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=638,194.08..638,194.12 rows=1 width=109) (actual rows= loops=)

  • Group Key: ((at_1.entrydate)::timestamp without time zone), (upper(at_1.comments)), at_1.userid, ui_1.duplicatename, (CASE WHEN tdh_1.effectivelyenabled THEN 0 ELSE 1 END), at_1.projectid, at_1.taskid, at_1.activityid
4.          

Initplan (for GroupAggregate)

5. 0.000 0.000 ↓ 0.0

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

6. 0.000 0.000 ↓ 0.0

Sort (cost=638,193.07..638,193.07 rows=1 width=109) (actual rows= loops=)

  • Sort Key: ((at_1.entrydate)::timestamp without time zone), (upper(at_1.comments)), at_1.userid, ui_1.duplicatename, (CASE WHEN tdh_1.effectivelyenabled THEN 0 ELSE 1 END), at_1.projectid, at_1.taskid, at_1.activityid
7. 0.000 0.000 ↓ 0.0

Nested Loop Semi Join (cost=22,590.78..638,193.06 rows=1 width=109) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Nested Loop Semi Join (cost=22,590.35..638,190.27 rows=1 width=81) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=22,590.07..638,187.96 rows=1 width=85) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=22,589.79..638,187.67 rows=1 width=84) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=22,589.65..638,187.48 rows=1 width=88) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Nested Loop (cost=22,589.07..638,186.83 rows=1 width=80) (actual rows= loops=)

  • Join Filter: (ts.id = timesheet5.id)
13. 0.000 0.000 ↓ 0.0

Index Scan using uix2tsuseridstartdate on timesheet timesheet5 (cost=0.42..1,657.84 rows=1 width=16) (actual rows= loops=)

  • Index Cond: ((startdate >= '2020-01-01'::date) AND (startdate <= '2020-03-31'::date))
  • Filter: ((enddate >= '2020-01-01'::date) AND (enddate <= '2020-03-31'::date))
14. 0.000 0.000 ↓ 0.0

Hash Join (cost=22,588.66..636,285.11 rows=19,510 width=96) (actual rows= loops=)

  • Hash Cond: (at_1.projectid = pj_1.id)
15. 0.000 0.000 ↓ 0.0

Append (cost=22,510.92..618,821.57 rows=1,376,901 width=1,052) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Result (cost=22,510.92..298,680.42 rows=1,245,922 width=1,052) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Append (cost=22,510.92..279,991.59 rows=1,245,922 width=1,044) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=22,510.92..264,464.70 rows=1,245,921 width=3,456) (actual rows= loops=)

  • Hash Cond: ((at_1.projectid = ptm.projectid) AND (at_1.userid = ptm.userid) AND (at_1.entrydate = ptma.date))
19.          

Initplan (for Hash Left Join)

20. 0.000 0.000 ↓ 0.0

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

21. 0.000 0.000 ↓ 0.0

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

22. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=21,806.75..157,857.23 rows=1,245,921 width=2,796) (actual rows= loops=)

  • Hash Cond: (at_1.taskid = tk_2.id)
23. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=20,892.76..153,672.25 rows=1,245,921 width=2,792) (actual rows= loops=)

  • Hash Cond: (at_1.billingrateid = br.id)
24. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=20,888.04..150,367.80 rows=1,245,921 width=2,768) (actual rows= loops=)

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

Hash Left Join (cost=16,415.84..101,727.67 rows=1,245,921 width=2,771) (actual rows= loops=)

  • Hash Cond: (at_1.projectid = pj_2.id)
26. 0.000 0.000 ↓ 0.0

Hash Join (cost=16,032.52..98,071.72 rows=1,245,921 width=2,767) (actual rows= loops=)

  • Hash Cond: (at_1.timesheetid = ts.id)
27. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=11,758.85..90,525.99 rows=1,246,456 width=2,755) (actual rows= loops=)

  • Merge Cond: ((at_1.billingrateid = pbr.billingrateid) AND (at_1.projectid = pbr.projectid))
  • Join Filter: (((pbr.billingrateid = $8) AND (at_1.userid = pbr.userid)) OR ((pbr.billingrateid <> $9) AND (pbr.userid IS NULL)))
28. 0.000 0.000 ↓ 0.0

Index Scan using ixpta4billingrateid on dm_projecttimeallocation_facts at_1 (cost=0.43..67,497.18 rows=1,246,456 width=2,739) (actual rows= loops=)

  • Filter: (timeoffcodeid IS NULL)
29. 0.000 0.000 ↓ 0.0

Sort (cost=11,757.05..12,043.90 rows=114,739 width=40) (actual rows= loops=)

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

Seq Scan on projectbillingrate pbr (cost=0.00..2,114.39 rows=114,739 width=40) (actual rows= loops=)

31. 0.000 0.000 ↓ 0.0

Hash (cost=2,659.41..2,659.41 rows=129,141 width=28) (actual rows= loops=)

32. 0.000 0.000 ↓ 0.0

Seq Scan on timesheet ts (cost=0.00..2,659.41 rows=129,141 width=28) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Hash (cost=304.81..304.81 rows=6,281 width=8) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_2 (cost=0.00..304.81 rows=6,281 width=8) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

Hash (cost=2,769.31..2,769.31 rows=136,231 width=33) (actual rows= loops=)

36. 0.000 0.000 ↓ 0.0

Seq Scan on projectbillingratehistory pbrh (cost=0.00..2,769.31 rows=136,231 width=33) (actual rows= loops=)

37. 0.000 0.000 ↓ 0.0

Hash (cost=3.21..3.21 rows=121 width=24) (actual rows= loops=)

38. 0.000 0.000 ↓ 0.0

Seq Scan on billingrate br (cost=0.00..3.21 rows=121 width=24) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

Hash (cost=662.33..662.33 rows=20,133 width=8) (actual rows= loops=)

40. 0.000 0.000 ↓ 0.0

Seq Scan on task tk_2 (cost=0.00..662.33 rows=20,133 width=8) (actual rows= loops=)

41. 0.000 0.000 ↓ 0.0

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

42. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.29..684.30 rows=1,020 width=44) (actual rows= loops=)

43. 0.000 0.000 ↓ 0.0

Seq Scan on projectteammemberallocation ptma (cost=0.00..20.20 rows=1,020 width=52) (actual rows= loops=)

44. 0.000 0.000 ↓ 0.0

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

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

Subquery Scan on *SELECT* 2 (cost=0.71..3,067.69 rows=1 width=1,044) (actual rows= loops=)

46. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.71..3,067.68 rows=1 width=1,044) (actual rows= loops=)

  • Filter: (at_2.id IS NULL)
47. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.29..682.78 rows=1,015 width=44) (actual rows= loops=)

48. 0.000 0.000 ↓ 0.0

Seq Scan on projectteammemberallocation ptma_1 (cost=0.00..20.20 rows=1,015 width=52) (actual rows= loops=)

  • Filter: (id IS NOT NULL)
49. 0.000 0.000 ↓ 0.0

Index Scan using projectteammember_pkey on projectteammember ptm_1 (cost=0.29..0.65 rows=1 width=24) (actual rows= loops=)

  • Index Cond: (id = ptma_1.projectteammemberid)
50. 0.000 0.000 ↓ 0.0

Index Scan using ixpta2projectid on dm_projecttimeallocation_facts at_2 (cost=0.43..2.34 rows=1 width=28) (actual rows= loops=)

  • Index Cond: ((ptm_1.projectid = projectid) AND (ptma_1.date = entrydate))
  • Filter: (ptm_1.userid = userid)
51. 0.000 0.000 ↓ 0.0

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

52. 0.000 0.000 ↓ 0.0

Nested Loop (cost=2.92..654.06 rows=121 width=3,442) (actual rows= loops=)

53.          

Initplan (for Nested Loop)

54. 0.000 0.000 ↓ 0.0

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

55. 0.000 0.000 ↓ 0.0

Hash Join (cost=1.62..632.14 rows=49 width=43) (actual rows= loops=)

  • Hash Cond: (ex.reimbursementcurrencyid = exchangerate_2.fixedcurrencyid)
  • Join Filter: ((ex.expensedate >= exchangerate_2.effectivedate) AND (ex.expensedate <= exchangerate_2.enddate))
56. 0.000 0.000 ↓ 0.0

Seq Scan on expense ex (cost=0.00..543.22 rows=21,522 width=27) (actual rows= loops=)

57. 0.000 0.000 ↓ 0.0

Hash (cost=1.61..1.61 rows=1 width=32) (actual rows= loops=)

58. 0.000 0.000 ↓ 0.0

Seq Scan on exchangerate exchangerate_2 (cost=0.00..1.61 rows=1 width=32) (actual rows= loops=)

  • Filter: (variablecurrencyid = $7)
59. 0.000 0.000 ↓ 0.0

Index Scan using ixeeexpenseid on expenseentry ee (cost=0.29..0.37 rows=2 width=2,647) (actual rows= loops=)

  • Index Cond: (expenseid = ex.id)
60. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 4 (cost=24,639.41..25,477.90 rows=5,033 width=1,052) (actual rows= loops=)

61. 0.000 0.000 ↓ 0.0

Seq Scan on task tsk (cost=24,639.41..25,402.41 rows=5,033 width=1,044) (actual rows= loops=)

  • Filter: ((NOT (hashed SubPlan 6)) AND (NOT (hashed SubPlan 7)))
62.          

SubPlan (for Seq Scan)

63. 0.000 0.000 ↓ 0.0

Unique (cost=0.43..24,519.90 rows=8,639 width=4) (actual rows= loops=)

64. 0.000 0.000 ↓ 0.0

Index Only Scan using ixpta2taskid on dm_projecttimeallocation_facts at (cost=0.43..22,407.93 rows=844,788 width=4) (actual rows= loops=)

  • Index Cond: (taskid IS NOT NULL)
65. 0.000 0.000 ↓ 0.0

Unique (cost=0.29..96.76 rows=463 width=4) (actual rows= loops=)

66. 0.000 0.000 ↓ 0.0

Index Only Scan using ixeetaskid on expenseentry (cost=0.29..86.60 rows=4,061 width=4) (actual rows= loops=)

  • Index Cond: (taskid IS NOT NULL)
67. 0.000 0.000 ↓ 0.0

Subquery Scan on *SELECT* 5 (cost=142,406.27..294,007.97 rows=125,825 width=928) (actual rows= loops=)

68. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=142,406.27..292,120.60 rows=125,825 width=920) (actual rows= loops=)

69.          

Initplan (for Nested Loop Left Join)

70. 0.000 0.000 ↓ 0.0

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

71. 0.000 0.000 ↓ 0.0

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

72. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=142,403.83..151,189.18 rows=125,825 width=159) (actual rows= loops=)

  • Hash Cond: (bi.id = iibi.billingitemid)
73. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=142,369.75..150,824.81 rows=125,825 width=143) (actual rows= loops=)

  • Hash Cond: (aggm.billingitemid = bi.id)
  • Filter: (aggm.uri IS NULL)
74. 0.000 0.000 ↓ 0.0

Index Scan using ixbiminvoicinghint on billingitem2metadata aggm (cost=0.42..7,566.71 rows=143,153 width=64) (actual rows= loops=)

75. 0.000 0.000 ↓ 0.0

Hash (cost=138,162.27..138,162.27 rows=336,565 width=143) (actual rows= loops=)

76. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=126,262.33..138,162.27 rows=336,565 width=143) (actual rows= loops=)

  • Hash Cond: (bidm.timesheetid = t.id)
77. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=121,988.66..133,005.09 rows=336,565 width=131) (actual rows= loops=)

  • Hash Cond: (bidm.billingrateid = br_1.id)
78. 0.000 0.000 ↓ 0.0

Hash Join (cost=121,983.93..132,109.38 rows=336,565 width=123) (actual rows= loops=)

  • Hash Cond: (bidm.projectid = pj_3.id)
79. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=121,789.92..131,031.33 rows=336,565 width=123) (actual rows= loops=)

  • Hash Cond: (pbrh_1.projectbillingrateid = pbr_1.id)
  • Join Filter: ((bi.entrydate >= pbrh_1.effectivedate) AND (bi.entrydate <= pbrh_1.enddate))
80. 0.000 0.000 ↓ 0.0

Seq Scan on projectbillingratehistory pbrh_1 (cost=0.00..2,769.31 rows=136,231 width=24) (actual rows= loops=)

81. 0.000 0.000 ↓ 0.0

Hash (cost=117,582.86..117,582.86 rows=336,565 width=135) (actual rows= loops=)

82. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=113,313.24..117,582.86 rows=336,565 width=135) (actual rows= loops=)

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

Sort (cost=101,556.16..102,397.57 rows=336,565 width=119) (actual rows= loops=)

  • Sort Key: bidm.projectid, bidm.billingrateid
84. 0.000 0.000 ↓ 0.0

Hash Join (cost=28,096.24..70,658.61 rows=336,565 width=119) (actual rows= loops=)

  • Hash Cond: (bidm.billingitemid = bi.id)
85. 0.000 0.000 ↓ 0.0

Seq Scan on billingitem2denormalizedmetadata bidm (cost=0.00..38,971.51 rows=1,367,941 width=108) (actual rows= loops=)

  • Filter: (userid IS NOT NULL)
86. 0.000 0.000 ↓ 0.0

Hash (cost=23,885.94..23,885.94 rows=336,824 width=27) (actual rows= loops=)

87. 0.000 0.000 ↓ 0.0

Seq Scan on billingitem2 bi (cost=0.00..23,885.94 rows=336,824 width=27) (actual rows= loops=)

  • Filter: isbillable
88. 0.000 0.000 ↓ 0.0

Sort (cost=11,757.05..12,043.90 rows=114,739 width=40) (actual rows= loops=)

  • Sort Key: pbr_1.projectid, pbr_1.billingrateid
89. 0.000 0.000 ↓ 0.0

Seq Scan on projectbillingrate pbr_1 (cost=0.00..2,114.39 rows=114,739 width=40) (actual rows= loops=)

90. 0.000 0.000 ↓ 0.0

Hash (cost=115.50..115.50 rows=6,281 width=4) (actual rows= loops=)

91. 0.000 0.000 ↓ 0.0

Index Only Scan using project_pkey on project pj_3 (cost=0.28..115.50 rows=6,281 width=4) (actual rows= loops=)

92. 0.000 0.000 ↓ 0.0

Hash (cost=3.21..3.21 rows=121 width=24) (actual rows= loops=)

93. 0.000 0.000 ↓ 0.0

Seq Scan on billingrate br_1 (cost=0.00..3.21 rows=121 width=24) (actual rows= loops=)

94. 0.000 0.000 ↓ 0.0

Hash (cost=2,659.41..2,659.41 rows=129,141 width=28) (actual rows= loops=)

95. 0.000 0.000 ↓ 0.0

Seq Scan on timesheet t (cost=0.00..2,659.41 rows=129,141 width=28) (actual rows= loops=)

96. 0.000 0.000 ↓ 0.0

Hash (cost=20.70..20.70 rows=1,070 width=32) (actual rows= loops=)

97. 0.000 0.000 ↓ 0.0

Seq Scan on invoiceitembillingitems iibi (cost=0.00..20.70 rows=1,070 width=32) (actual rows= loops=)

98. 0.000 0.000 ↓ 0.0

Index Scan using ixbimbillingitemidkey on billingitem2metadata bi2m (cost=0.43..1.09 rows=1 width=32) (actual rows= loops=)

  • Index Cond: (billingitemid = bi.id)
99. 0.000 0.000 ↓ 0.0

Hash (cost=76.62..76.62 rows=89 width=8) (actual rows= loops=)

100. 0.000 0.000 ↓ 0.0

Index Scan using ixprjclientid on project pj_1 (cost=0.28..76.62 rows=89 width=8) (actual rows= loops=)

  • Index Cond: (clientid = 114)
101. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.57..0.64 rows=1 width=12) (actual rows= loops=)

102. 0.000 0.000 ↓ 0.0

Index Scan using task_pkey on task tk_1 (cost=0.29..0.31 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (at_1.taskid = id)
103. 0.000 0.000 ↓ 0.0

Index Scan using taskdenormalizedhierarchy_pkey on taskdenormalizedhierarchy tdh_1 (cost=0.29..0.33 rows=1 width=5) (actual rows= loops=)

  • Index Cond: (tk_1.id = taskid)
104. 0.000 0.000 ↓ 0.0

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

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

Index Scan using userinfo_pkey on userinfo ui_1 (cost=0.28..0.30 rows=1 width=5) (actual rows= loops=)

  • Index Cond: (at_1.userid = id)
106. 0.000 0.000 ↓ 0.0

Index Only Scan using clients_pkey on clients clients4 (cost=0.28..2.29 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (id = 114)
107. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.43..2.78 rows=1 width=4) (actual rows= loops=)

  • Filter: ((alternatives: SubPlan 2 or hashed SubPlan 3) OR (project6.projectleaderapproverid = 573) OR (projectsharingassignment7.userid = 573))
108. 0.000 0.000 ↓ 0.0

Index Scan using project_pkey on project project6 (cost=0.28..0.30 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (id = at_1.projectid)
109. 0.000 0.000 ↓ 0.0

Index Only Scan using projectsharingassignment_pkey on projectsharingassignment projectsharingassignment7 (cost=0.14..0.16 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (projectid = project6.id)
110.          

SubPlan (for Nested Loop Left Join)

111. 0.000 0.000 ↓ 0.0

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

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

Index Only Scan using project_pkey on project project8_1 (cost=0.28..115.50 rows=6,281 width=4) (actual rows= loops=)

113.          

Initplan (for Sort)

114. 0.000 0.000 ↓ 0.0

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

115. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=8.04..9.50 rows=1 width=2,555) (actual rows= loops=)

116. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=7.77..9.19 rows=1 width=314) (actual rows= loops=)

  • Hash Cond: (activities16.id = imeexpensecostbilling2_facts13.activityid8)
117. 0.000 0.000 ↓ 0.0

Seq Scan on activities activities16 (cost=0.00..1.30 rows=30 width=122) (actual rows= loops=)

118. 0.000 0.000 ↓ 0.0

Hash (cost=7.75..7.75 rows=1 width=200) (actual rows= loops=)

119. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1.56..7.75 rows=1 width=200) (actual rows= loops=)

120. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1.28..5.45 rows=1 width=182) (actual rows= loops=)

121. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.99..5.12 rows=1 width=149) (actual rows= loops=)

122. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.85..4.93 rows=1 width=153) (actual rows= loops=)

123. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.56..2.63 rows=1 width=131) (actual rows= loops=)

124. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.28..2.32 rows=1 width=114) (actual rows= loops=)

125. 0.000 0.000 ↓ 0.0

CTE Scan on eexpensecostbilling2_facts0cte imeexpensecostbilling2_facts13 (cost=0.00..0.02 rows=1 width=77) (actual rows= loops=)

126. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (imeexpensecostbilling2_facts13.projectid6 = id)
127. 0.000 0.000 ↓ 0.0

Index Scan using clients_pkey on clients cl (cost=0.28..0.31 rows=1 width=25) (actual rows= loops=)

  • Index Cond: (pj.clientid = id)
128. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (imeexpensecostbilling2_facts13.taskid7 = id)
129. 0.000 0.000 ↓ 0.0

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

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

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

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

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

  • Index Cond: (imeexpensecostbilling2_facts13.userid3 = id)
132. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (ui.id = userid)