explain.depesz.com

PostgreSQL's explain analyze made readable

Result: 9kp1

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

Sort (cost=2,388,775.63..2,388,775.63 rows=1 width=3,859) (actual rows= loops=)

  • Sort Key: ((cl.name)::character varying(255)) COLLATE "en_US", ((pj.code)::character varying(50)) COLLATE "en_US", ((tk.code)::character varying(50)) COLLATE "en_US", ((pj.name)::character varying(255)) COLLATE "en_US", ((tk.name)::character varying(255)) COLLATE "en_US", ((ui.info2)::character varying(255)) COLLATE "en_US", ((ui.lastname)::character varying(50)) COLLATE "en_US", ((ui.firstname)::character varying(50)) COLLATE "en_US", imeexpensecostbilling2_facts12.userduplicatename5, ((login.loginname)::character varying(255)) COLLATE "en_US", ((ui.displayname)::text) COLLATE "en_US", imeexpensecostbilling2_facts12.billingratename2 COLLATE "en_US", ((currencyinfo14.symbol)::character varying(50)) COLLATE "en_US", imeexpensecostbilling2_facts12.hourlyrate3, imeexpensecostbilling2_facts12.timesheetenddate6, imeexpensecostbilling2_facts12.timesheetenddate7, ((tk.info19)::character varying(255)) COLLATE "en_US
2.          

CTE eexpensecostbilling2_facts0cte

3. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=2,388,765.63..2,388,765.69 rows=1 width=169) (actual rows= loops=)

  • Group Key: (upper((timeexpensecostbilling2_facts0.billingratename)::text)), timeexpensecostbilling2_facts0.hourlyrate, timeexpensecostbilling2_facts0.userid, ui_1.duplicatename, ((date_part('month'::text, (ts.enddate)::timestamp without time zone))::integer), ((date_part('year'::text, (ts.enddate)::timestamp without time zone))::integer), timeexpensecostbilling2_facts0.projectid, timeexpensecostbilling2_facts0.taskid, timeexpensecostbilling2_facts0.currencyid
4. 0.000 0.000 ↓ 0.0

Sort (cost=2,388,765.63..2,388,765.63 rows=1 width=169) (actual rows= loops=)

  • Sort Key: (upper((timeexpensecostbilling2_facts0.billingratename)::text)), timeexpensecostbilling2_facts0.hourlyrate, timeexpensecostbilling2_facts0.userid, ui_1.duplicatename, ((date_part('month'::text, (ts.enddate)::timestamp without time zone))::integer), ((date_part('year'::text, (ts.enddate)::timestamp without time zone))::integer), timeexpensecostbilling2_facts0.projectid, timeexpensecostbilling2_facts0.taskid, timeexpensecostbilling2_facts0.currencyid
5. 0.000 0.000 ↓ 0.0

Nested Loop (cost=188,854.72..2,388,765.62 rows=1 width=169) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Nested Loop (cost=188,854.44..2,388,765.25 rows=1 width=141) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Nested Loop (cost=188,854.16..2,388,763.87 rows=4 width=149) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Nested Loop (cost=188,854.02..2,388,763.22 rows=4 width=153) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=188,853.74..2,388,762.03 rows=4 width=148) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Nested Loop (cost=188,852.90..2,388,758.10 rows=4 width=160) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Nested Loop (cost=188,852.62..2,388,754.88 rows=7 width=152) (actual rows= loops=)

  • Join Filter: (pj_1.id = timeexpensecostbilling2_facts0.projectid)
12. 0.000 0.000 ↓ 0.0

Merge Join (cost=2.59..271.19 rows=1 width=8) (actual rows= loops=)

  • Merge Cond: (pj_1.id = project5.id)
13. 0.000 0.000 ↓ 0.0

Index Only Scan using project_pkey on project pj_1 (cost=0.28..254.92 rows=5,576 width=4) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Sort (cost=2.31..2.31 rows=1 width=4) (actual rows= loops=)

  • Sort Key: project5.id
15. 0.000 0.000 ↓ 0.0

Index Scan using ixprj_code on project project5 (cost=0.28..2.30 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (upper((code)::text) = 'ABBV-31475'::text)
16. 0.000 0.000 ↓ 0.0

Subquery Scan on timeexpensecostbilling2_facts0 (cost=188,850.03..2,388,007.67 rows=38,082 width=144) (actual rows= loops=)

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

Append (cost=188,850.03..2,330,741.21 rows=3,817,764 width=1,052) (actual rows= loops=)

18. 0.000 0.000 ↓ 0.0

Result (cost=188,850.03..668,724.96 rows=2,908,148 width=1,052) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Append (cost=188,850.03..625,102.74 rows=2,908,148 width=1,044) (actual rows= loops=)

20. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=188,850.03..595,877.80 rows=2,908,147 width=3,440) (actual rows= loops=)

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

Initplan (for Hash Left Join)

22. 0.000 0.000 ↓ 0.0

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

23. 0.000 0.000 ↓ 0.0

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

24. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=188,744.47..533,974.11 rows=2,908,147 width=2,780) (actual rows= loops=)

  • Hash Cond: (at_1.taskid = tk_1.id)
25. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=187,669.62..525,264.22 rows=2,908,147 width=2,776) (actual rows= loops=)

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

Hash Left Join (cost=187,563.62..517,516.25 rows=2,908,147 width=2,730) (actual rows= loops=)

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

Hash Left Join (cost=147,832.43..371,713.02 rows=2,908,147 width=2,734) (actual rows= loops=)

  • Hash Cond: (at_1.projectid = pj_3.id)
28. 0.000 0.000 ↓ 0.0

Hash Join (cost=147,313.97..363,554.96 rows=2,908,147 width=2,730) (actual rows= loops=)

  • Hash Cond: (at_1.timesheetid = ts_1.id)
29. 0.000 0.000 ↓ 0.0

Merge Left Join (cost=142,408.08..350,988.18 rows=2,918,349 width=2,718) (actual rows= loops=)

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

Index Scan using ixpta4billingrateid on dm_projecttimeallocation_facts at_1 (cost=0.56..176,002.61 rows=2,918,349 width=2,702) (actual rows= loops=)

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

Sort (cost=142,407.15..145,384.80 rows=1,191,059 width=40) (actual rows= loops=)

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

Seq Scan on projectbillingrate pbr (cost=0.00..22,206.59 rows=1,191,059 width=40) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Hash (cost=3,044.84..3,044.84 rows=148,884 width=28) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Seq Scan on timesheet ts_1 (cost=0.00..3,044.84 rows=148,884 width=28) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

Hash (cost=448.76..448.76 rows=5,576 width=8) (actual rows= loops=)

36. 0.000 0.000 ↓ 0.0

Seq Scan on project pj_3 (cost=0.00..448.76 rows=5,576 width=8) (actual rows= loops=)

37. 0.000 0.000 ↓ 0.0

Hash (cost=24,620.53..24,620.53 rows=1,208,853 width=32) (actual rows= loops=)

38. 0.000 0.000 ↓ 0.0

Seq Scan on projectbillingratehistory pbrh (cost=0.00..24,620.53 rows=1,208,853 width=32) (actual rows= loops=)

39. 0.000 0.000 ↓ 0.0

Hash (cost=66.00..66.00 rows=3,200 width=46) (actual rows= loops=)

40. 0.000 0.000 ↓ 0.0

Seq Scan on billingrate br (cost=0.00..66.00 rows=3,200 width=46) (actual rows= loops=)

41. 0.000 0.000 ↓ 0.0

Hash (cost=770.49..770.49 rows=24,349 width=8) (actual rows= loops=)

42. 0.000 0.000 ↓ 0.0

Seq Scan on task tk_1 (cost=0.00..770.49 rows=24,349 width=8) (actual rows= loops=)

43. 0.000 0.000 ↓ 0.0

Hash (cost=72.05..72.05 rows=29 width=44) (actual rows= loops=)

44. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.42..72.05 rows=29 width=44) (actual rows= loops=)

45. 0.000 0.000 ↓ 0.0

Seq Scan on projectteammemberallocation ptma (cost=0.00..1.29 rows=29 width=52) (actual rows= loops=)

46. 0.000 0.000 ↓ 0.0

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

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

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

48. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.85..143.46 rows=1 width=1,044) (actual rows= loops=)

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

Nested Loop (cost=0.42..72.05 rows=29 width=44) (actual rows= loops=)

50. 0.000 0.000 ↓ 0.0

Seq Scan on projectteammemberallocation ptma_1 (cost=0.00..1.29 rows=29 width=52) (actual rows= loops=)

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

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

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

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

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

Subquery Scan on *SELECT* 3 (cost=3.58..1,251.11 rows=6,815 width=1,052) (actual rows= loops=)

54. 0.000 0.000 ↓ 0.0

Nested Loop (cost=3.58..1,182.96 rows=6,815 width=3,435) (actual rows= loops=)

55.          

Initplan (for Nested Loop)

56. 0.000 0.000 ↓ 0.0

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

57. 0.000 0.000 ↓ 0.0

Hash Join (cost=2.27..449.32 rows=1,205 width=30) (actual rows= loops=)

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

Seq Scan on expense ex (cost=0.00..168.68 rows=6,168 width=27) (actual rows= loops=)

59. 0.000 0.000 ↓ 0.0

Hash (cost=2.11..2.11 rows=13 width=19) (actual rows= loops=)

60. 0.000 0.000 ↓ 0.0

Seq Scan on exchangerate exchangerate_1 (cost=0.00..2.11 rows=13 width=19) (actual rows= loops=)

  • Filter: (variablecurrencyid = $4)
61. 0.000 0.000 ↓ 0.0

Index Scan using ixeeexpenseid on expenseentry ee (cost=0.29..0.47 rows=5 width=2,640) (actual rows= loops=)

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

Subquery Scan on *SELECT* 4 (cost=69,392.00..70,375.54 rows=6,087 width=1,052) (actual rows= loops=)

63. 0.000 0.000 ↓ 0.0

Seq Scan on task tsk (cost=69,392.00..70,284.23 rows=6,087 width=1,044) (actual rows= loops=)

  • Filter: ((NOT (hashed SubPlan 3)) AND (NOT (hashed SubPlan 4)))
64.          

SubPlan (for Seq Scan)

65. 0.000 0.000 ↓ 0.0

Unique (cost=0.43..69,297.69 rows=17,284 width=4) (actual rows= loops=)

66. 0.000 0.000 ↓ 0.0

Index Only Scan using ixpta2taskid on dm_projecttimeallocation_facts at (cost=0.43..62,888.03 rows=2,563,863 width=4) (actual rows= loops=)

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

Unique (cost=0.29..50.29 rows=323 width=4) (actual rows= loops=)

68. 0.000 0.000 ↓ 0.0

Index Only Scan using ixeetaskid on expenseentry (cost=0.29..44.91 rows=2,150 width=4) (actual rows= loops=)

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

Subquery Scan on *SELECT* 5 (cost=709,312.18..1,590,389.60 rows=896,714 width=950) (actual rows= loops=)

70. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=709,312.18..1,576,938.89 rows=896,714 width=942) (actual rows= loops=)

71.          

Initplan (for Nested Loop Left Join)

72. 0.000 0.000 ↓ 0.0

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

73. 0.000 0.000 ↓ 0.0

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

74. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=709,278.75..860,935.10 rows=896,714 width=183) (actual rows= loops=)

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

Hash Left Join (cost=709,244.68..858,547.15 rows=896,714 width=167) (actual rows= loops=)

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

Hash Left Join (cost=709,242.52..849,577.46 rows=2,391,343 width=167) (actual rows= loops=)

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

Hash Left Join (cost=704,336.63..838,394.11 rows=2,391,343 width=155) (actual rows= loops=)

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

Hash Join (cost=664,605.44..711,440.85 rows=2,391,343 width=167) (actual rows= loops=)

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

Hash Left Join (cost=664,280.82..704,834.23 rows=2,391,343 width=167) (actual rows= loops=)

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

Merge Left Join (cost=664,174.82..698,444.37 rows=2,391,343 width=137) (actual rows= loops=)

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

Sort (cost=521,767.66..527,746.02 rows=2,391,343 width=121) (actual rows= loops=)

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

Hash Join (cost=81,967.77..179,670.17 rows=2,391,343 width=121) (actual rows= loops=)

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

Seq Scan on billingitem2denormalizedmetadata bidm (cost=0.00..89,866.81 rows=2,984,981 width=108) (actual rows= loops=)

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

Hash (cost=52,075.90..52,075.90 rows=2,391,350 width=29) (actual rows= loops=)

85. 0.000 0.000 ↓ 0.0

Seq Scan on billingitem2 bi (cost=0.00..52,075.90 rows=2,391,350 width=29) (actual rows= loops=)

  • Filter: isbillable
86. 0.000 0.000 ↓ 0.0

Sort (cost=142,407.15..145,384.80 rows=1,191,059 width=40) (actual rows= loops=)

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

Seq Scan on projectbillingrate pbr_1 (cost=0.00..22,206.59 rows=1,191,059 width=40) (actual rows= loops=)

88. 0.000 0.000 ↓ 0.0

Hash (cost=66.00..66.00 rows=3,200 width=46) (actual rows= loops=)

89. 0.000 0.000 ↓ 0.0

Seq Scan on billingrate br_1 (cost=0.00..66.00 rows=3,200 width=46) (actual rows= loops=)

90. 0.000 0.000 ↓ 0.0

Hash (cost=254.92..254.92 rows=5,576 width=4) (actual rows= loops=)

91. 0.000 0.000 ↓ 0.0

Index Only Scan using project_pkey on project pj_4 (cost=0.28..254.92 rows=5,576 width=4) (actual rows= loops=)

92. 0.000 0.000 ↓ 0.0

Hash (cost=24,620.53..24,620.53 rows=1,208,853 width=24) (actual rows= loops=)

93. 0.000 0.000 ↓ 0.0

Seq Scan on projectbillingratehistory pbrh_1 (cost=0.00..24,620.53 rows=1,208,853 width=24) (actual rows= loops=)

94. 0.000 0.000 ↓ 0.0

Hash (cost=3,044.84..3,044.84 rows=148,884 width=28) (actual rows= loops=)

95. 0.000 0.000 ↓ 0.0

Seq Scan on timesheet t (cost=0.00..3,044.84 rows=148,884 width=28) (actual rows= loops=)

96. 0.000 0.000 ↓ 0.0

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

97. 0.000 0.000 ↓ 0.0

Index Scan using ixbiminvoicinghint on billingitem2metadata aggm (cost=0.12..2.14 rows=1 width=70) (actual rows= loops=)

98. 0.000 0.000 ↓ 0.0

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

99. 0.000 0.000 ↓ 0.0

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

100. 0.000 0.000 ↓ 0.0

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

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

Index Scan using ixduuserid on departmentusers du (cost=0.28..0.45 rows=1 width=8) (actual rows= loops=)

  • Index Cond: (userid = timeexpensecostbilling2_facts0.userid)
  • Filter: (departmentid = ANY ('{1,126,93,113,162,59,62,60,63,61,96,98,99,97,100,101,163,64,27,28,103,39,49,48,50,92,4,24,19,20,21,22,23,25,91,51,52,53,54,55,56,57,58,2,5,6,90,7,29,8,26,9,10,11,89,3,18,12,13,14,15,16,17,114,119,120,121,123,124,125,127,122,42,34,37,36,116,115,164,35,47,102,32,33,40,38,69,67,70,87,71,72,74,75,73,77,76,78,104,106,107,108,109,112,105,110,111,68,79,88,80,81,83,84,82,95,85,86,30,31,94,117,118,194}'::integer[]))
102. 0.000 0.000 ↓ 0.0

Nested Loop (cost=0.84..0.97 rows=1 width=20) (actual rows= loops=)

103. 0.000 0.000 ↓ 0.0

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

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

Index Only Scan using dm_timesheetlist_facts_pkey on dm_timesheetlist_facts tslist (cost=0.42..0.47 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (timesheetid = ts.id)
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: (id = timeexpensecostbilling2_facts0.userid)
106. 0.000 0.000 ↓ 0.0

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

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

Index Scan using userinfo_pkey on userinfo ui_2 (cost=0.28..0.35 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (id = timeexpensecostbilling2_facts0.userid)
  • Filter: ((upper((info2)::text) = ANY ('{"ACCESS EXPERIENCE TEAM","CORE ACCESS",ETHOS,GPMA,"GPMA UK","GLOBAL PRICING & MARKET ACCESS - UK","GLOBAL PRICING AND PRODUCT STRATEGY","GLOBAL PRICING AND PRODUCT STRATEGY - UK","HOBART CORE","HOBART FORTE","HOBART INNOVATIONS","HOBART INNOVATIONS - DIGITAL","HOBART INNOVATIONS - STRATEGY",ISA,"P4M ADVISORS",PFM,"PFV - CHI","PFV - CHI PAYER","PFV - LA","PFV - NJ","PFV - NJ 230","PFV - NJ PAYER","PFV - NY","PFV - NY PAYER","PFV - UK",PHE,PHE-ESGC,"PPE PAYER","PRECISION ADVISORS","PRECISION EFFECT","PRECISION EFFECT LONDON","PRECISION FOR MEDICINE",QUANTUVIS,REGULATORY,"SCIENTIA ADVISORS, INC.","STERN IR","THE HOBART GROUP"}'::text[])) OR (info2 IS NULL))
108. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (id = timeexpensecostbilling2_facts0.projectid)
  • Filter: ((upper((info1)::text) = ANY ('{"CORE ACCESS","GLOBAL PRICING AND PRODUCT STRATEGY","GLOBAL PRICING AND PRODUCT STRATEGY - UK","HOBART INNOVATIONS",ISA,"LEHMAN MILLET","PFV - CHI","PFV - LA","PFV - NJ","PFV - NJ 230","PFV - NJ PAYER","PFV - NY","PFV - UK",PHE,"PRECISION EFFECT EAST COAST","PRECISION EFFECT LONDON","PRECISION EFFECT WEST COAST","PRECISION FOR MEDICINE","PRECISION FOR VALUE",QUANTUVIS,REGULATORY,PX-ESGC,ETHOS,"ACCESS EXPERIENCE TEAM","VALUE EXPERIENCE TEAM",GPMA,"GPMA UK"}'::text[])) OR (info1 IS NULL))
109.          

Initplan (for Sort)

110. 0.000 0.000 ↓ 0.0

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

111. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1.55..8.92 rows=1 width=3,859) (actual rows= loops=)

  • Join Filter: (imeexpensecostbilling2_facts12.currencyid10 = currencyinfo14.id)
112. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1.55..7.76 rows=1 width=316) (actual rows= loops=)

113. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=1.27..7.44 rows=1 width=288) (actual rows= loops=)

114. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.99..5.14 rows=1 width=240) (actual rows= loops=)

115. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.84..4.92 rows=1 width=244) (actual rows= loops=)

116. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.56..2.62 rows=1 width=196) (actual rows= loops=)

117. 0.000 0.000 ↓ 0.0

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

118. 0.000 0.000 ↓ 0.0

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

119. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (imeexpensecostbilling2_facts12.projectid8 = id)
120. 0.000 0.000 ↓ 0.0

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

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

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

  • Index Cond: (imeexpensecostbilling2_facts12.taskid9 = id)
122. 0.000 0.000 ↓ 0.0

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

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

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

  • Index Cond: (imeexpensecostbilling2_facts12.userid4 = id)
124. 0.000 0.000 ↓ 0.0

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

  • Index Cond: (ui.id = userid)
125. 0.000 0.000 ↓ 0.0

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