explain.depesz.com

PostgreSQL's explain analyze made readable

Result: 8IyY

Settings
# exclusive inclusive rows x rows loops node
1. 4,910.518 367,831.880 ↑ 1.5 456,266 1

Sort (cost=1,398,724.52..1,400,415.42 rows=676,363 width=342) (actual time=367,665.295..367,831.880 rows=456,266 loops=1)

  • Output: ((pj.name)::character varying(255)), ((tk.name)::character varying(255)), tk.id, ((ui.lastname)::character varying(50)), ((ui.firstname)::character varying(50)), dmv_timesheetday_facts8.userduplicatename6, ((login.loginname)::character varying(25 (...)
  • Sort Key: ((pj.name)::character varying(255)) COLLATE "en_US", ((tk.name)::character varying(255)) COLLATE "en_US", ((ui.lastname)::character varying(50)) COLLATE "en_US", ((ui.firstname)::character varying(50)) COLLATE "en_US", dmv_timesheetday_facts8.u (...)
  • Sort Method: quicksort Memory: 233934kB
2.          

CTE dmv_timesheetday_facts0cte

3. 1,656.264 359,543.316 ↑ 1.5 456,266 1

GroupAggregate (cost=1,196,153.89..1,245,190.21 rows=676,363 width=158) (actual time=357,713.764..359,543.316 rows=456,266 loops=1)

  • Output: sum((((date_part('epoch'::text, dm_attendancetimeallocation_facts.duration) / '3600'::double precision) * (pbrh.hourlyrate)::double precision))::numeric(19,4)), sum(CASE WHEN ((at.timeoffcodeid IS NULL) AND (at.billingrateid IS NOT NULL)) (...)
  • Group Key: ts_2.userid, pbrh.hourlyrate, (upper((CASE WHEN (at.timeoffcodeid IS NULL) THEN at.timeentryinfo1 ELSE NULL::character varying END)::text)), at.id, ui_1.duplicatename, ts_3.enddate, at.projectid, at.taskid, pbrh.currencyid, ts_2.id
4.          

Initplan (forGroupAggregate)

5. 0.002 0.002 ↑ 1.0 1 1

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

  • Output: projectsysteminformation.usercustombillingrateid
6. 0.002 0.002 ↑ 1.0 1 1

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

  • Output: projectsysteminformation_1.usercustombillingrateid
7. 1,757.682 357,887.048 ↑ 1.5 456,266 1

Sort (cost=1,196,151.87..1,197,842.78 rows=676,363 width=158) (actual time=357,713.722..357,887.048 rows=456,266 loops=1)

  • Output: ts_2.userid, pbrh.hourlyrate, at.id, ui_1.duplicatename, ts_3.enddate, at.projectid, at.taskid, pbrh.currencyid, ts_2.id, (upper((CASE WHEN (at.timeoffcodeid IS NULL) THEN at.timeentryinfo1 ELSE NULL::character varying END)::text)), (...)
  • Sort Key: ts_2.userid, pbrh.hourlyrate, (upper((CASE WHEN (at.timeoffcodeid IS NULL) THEN at.timeentryinfo1 ELSE NULL::character varying END)::text)), at.id, ui_1.duplicatename, ts_3.enddate, at.projectid, at.taskid, pbrh.currencyid, ts_2.i (...)
  • Sort Method: quicksort Memory: 126931kB
8. 938.591 356,129.366 ↑ 1.5 456,266 1

Hash Join (cost=59,479.34..1,130,654.78 rows=676,363 width=158) (actual time=1,643.713..356,129.366 rows=456,266 loops=1)

  • Output: ts_2.userid, pbrh.hourlyrate, at.id, ui_1.duplicatename, ts_3.enddate, at.projectid, at.taskid, pbrh.currencyid, ts_2.id, upper((CASE WHEN (at.timeoffcodeid IS NULL) THEN at.timeentryinfo1 ELSE NULL::character varying END)::te (...)
  • Hash Cond: (ts_2.id = ts_3.id)
9. 372.251 354,929.623 ↑ 1.5 456,266 1

Hash Join (cost=39,856.42..1,098,350.05 rows=676,363 width=170) (actual time=1,382.060..354,929.623 rows=456,266 loops=1)

  • Output: at.id, at.projectid, at.taskid, at.timeoffcodeid, at.timeentryinfo1, at.billingrateid, at.duration, at.timesheetid, ts_2.userid, ts_2.id, dm_attendancetimeallocation_facts.duration, pbrh.hourlyrate, pbrh.currencyid, ui_1 (...)
  • Hash Cond: (ts_2.userid = ui_1.id)
10. 668.252 354,556.284 ↑ 1.5 456,266 1

Hash Right Join (cost=39,784.92..1,088,978.56 rows=676,363 width=169) (actual time=1,380.948..354,556.284 rows=456,266 loops=1)

  • Output: at.id, at.projectid, at.taskid, at.timeoffcodeid, at.timeentryinfo1, at.billingrateid, at.duration, at.timesheetid, ts_2.userid, ts_2.id, dm_attendancetimeallocation_facts.duration, pbrh.hourlyrate, pbrh.currencyid (...)
  • Hash Cond: (dm_attendancetimeallocation_facts.id = at.id)
11. 537.745 352,531.104 ↑ 1.7 395,640 1

Nested Loop (cost=1.12..1,039,839.84 rows=691,009 width=42) (actual time=21.659..352,531.104 rows=395,640 loops=1)

  • Output: dm_attendancetimeallocation_facts.duration, dm_attendancetimeallocation_facts.id, pbrh.hourlyrate, pbrh.currencyid
12. 556.396 350,015.159 ↓ 5.6 395,640 1

Nested Loop (cost=0.70..976,671.07 rows=70,800 width=50) (actual time=21.633..350,015.159 rows=395,640 loops=1)

  • Output: dm_attendancetimeallocation_facts.duration, dm_attendancetimeallocation_facts.userid, dm_attendancetimeallocation_facts.entrydate, dm_attendancetimeallocation_facts.id, pbrh.hourlyrate, pbrh.currencyid
  • Join Filter: (dm_attendancetimeallocation_facts.billingrateid = br.id)
  • Rows Removed by Join Filter: 395640
13. 229.146 349,063.123 ↓ 4.8 395,640 1

Nested Loop (cost=0.70..974,215.03 rows=81,834 width=82) (actual time=21.618..349,063.123 rows=395,640 loops=1)

  • Output: dm_attendancetimeallocation_facts.duration, dm_attendancetimeallocation_facts.billingrateid, dm_attendancetimeallocation_facts.userid, dm_attendancetimeallocation_facts.entrydate, dm_attendancetim (...)
14. 2.617 2.617 ↓ 2.0 1,296 1

Seq Scan on bepdt123.projectbillingrate pbr (cost=0.00..32.44 rows=649 width=40) (actual time=0.018..2.617 rows=1,296 loops=1)

  • Output: pbr.id, pbr.billingrateid, pbr.projectid, pbr.userid, pbr.isenabled
  • Filter: ((pbr.billingrateid = $0) OR ((pbr.billingrateid <> $1) AND (pbr.userid IS NULL)))
15. 281.592 348,831.360 ↓ 3.1 305 1,296

Nested Loop (cost=0.70..1,500.07 rows=98 width=86) (actual time=104.352..269.160 rows=305 loops=1,296)

  • Output: dm_attendancetimeallocation_facts.duration, dm_attendancetimeallocation_facts.billingrateid, dm_attendancetimeallocation_facts.projectid, dm_attendancetimeallocation_facts.userid, dm_attenda (...)
16. 10.368 10.368 ↑ 1.0 1 1,296

Index Scan using ixpbrhprojectbillingrateid on bepdt123.projectbillingratehistory pbrh (cost=0.28..0.34 rows=1 width=34) (actual time=0.006..0.008 rows=1 loops=1,296)

  • Output: pbrh.id, pbrh.projectbillingrateid, pbrh.effectivedate, pbrh.enddate, pbrh.currencyid, pbrh.hourlyrate
  • Index Cond: (pbrh.projectbillingrateid = pbr.id)
17. 348,539.400 348,539.400 ↓ 2.2 220 1,800

Index Scan using ixata2projectid on bepdt123.dm_attendancetimeallocation_facts (cost=0.42..1,498.75 rows=98 width=60) (actual time=85.672..193.633 rows=220 loops=1,800)

  • Output: dm_attendancetimeallocation_facts.id, dm_attendancetimeallocation_facts.userid, dm_attendancetimeallocation_facts.entrydate, dm_attendancetimeallocation_facts.duration, dm_attendanceti (...)
  • Index Cond: ((dm_attendancetimeallocation_facts.projectid = pbr.projectid) AND (dm_attendancetimeallocation_facts.entrydate >= pbrh.effectivedate) AND (dm_attendancetimeallocation_facts.entryd (...)
  • Filter: ((pbr.billingrateid = dm_attendancetimeallocation_facts.billingrateid) AND (((pbr.billingrateid = $0) AND (dm_attendancetimeallocation_facts.userid = pbr.userid)) OR ((pbr.billingratei (...)
  • Rows Removed by Filter: 292137
18. 395.635 395.640 ↑ 1.0 2 395,640

Materialize (cost=0.00..1.03 rows=2 width=16) (actual time=0.000..0.001 rows=2 loops=395,640)

  • Output: br.id
19. 0.005 0.005 ↑ 1.0 2 1

Seq Scan on bepdt123.billingrate br (cost=0.00..1.02 rows=2 width=16) (actual time=0.003..0.005 rows=2 loops=1)

  • Output: br.id
20. 1,978.200 1,978.200 ↑ 8.0 1 395,640

Index Only Scan using ixtsuseridstartdateenddate on bepdt123.timesheet dmvts (cost=0.42..0.81 rows=8 width=12) (actual time=0.004..0.005 rows=1 loops=395,640)

  • Output: dmvts.userid, dmvts.startdate, dmvts.enddate
  • Index Cond: ((dmvts.userid = dm_attendancetimeallocation_facts.userid) AND (dmvts.startdate <= dm_attendancetimeallocation_facts.entrydate) AND (dmvts.enddate >= dm_attendancetimeallocation_facts.entrydate))
  • Heap Fetches: 196485
21. 272.798 1,356.928 ↓ 1.0 456,266 1

Hash (cost=34,147.86..34,147.86 rows=450,875 width=143) (actual time=1,356.928..1,356.928 rows=456,266 loops=1)

  • Output: at.id, at.projectid, at.taskid, at.timeoffcodeid, at.timeentryinfo1, at.billingrateid, at.duration, at.timesheetid, ts_2.userid, ts_2.id, ((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numer (...)
  • Buckets: 524288 Batches: 1 Memory Usage: 71550kB
22. 307.314 1,084.130 ↓ 1.0 456,266 1

Hash Left Join (cost=4,099.84..34,147.86 rows=450,875 width=143) (actual time=74.469..1,084.130 rows=456,266 loops=1)

  • Output: at.id, at.projectid, at.taskid, at.timeoffcodeid, at.timeentryinfo1, at.billingrateid, at.duration, at.timesheetid, ts_2.userid, ts_2.id, ((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100': (...)
  • Hash Cond: (at.projectid = pj_1.id)
  • Join Filter: ((at.entrydate >= pc.effectivedate) AND (at.entrydate <= pc.enddate))
23. 225.504 776.792 ↓ 1.0 456,266 1

Hash Left Join (cost=4,097.80..26,453.90 rows=450,875 width=115) (actual time=74.426..776.792 rows=456,266 loops=1)

  • Output: at.id, at.projectid, at.taskid, at.timeoffcodeid, at.timeentryinfo1, at.billingrateid, at.duration, at.entrydate, at.timesheetid, ts_2.userid, ts_2.id
  • 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))
24. 359.169 551.279 ↓ 1.0 456,266 1

Hash Join (cost=4,095.75..23,070.27 rows=450,875 width=119) (actual time=74.403..551.279 rows=456,266 loops=1)

  • Output: ts_2.userid, ts_2.id, at.id, at.projectid, at.taskid, at.timeoffcodeid, at.timeentryinfo1, at.billingrateid, at.duration, at.entrydate, at.userspecifiedclientid, at.timesheetid
  • Hash Cond: (at.timesheetid = ts_2.id)
25. 118.185 118.185 ↑ 1.0 459,444 1

Seq Scan on bepdt123.dm_attendancetimeallocation_facts at (cost=0.00..12,738.38 rows=460,638 width=99) (actual time=0.003..118.185 rows=459,444 loops=1)

  • Output: at.id, at.userid, at.entrydate, at.duration, at.comments, at.projectid, at.taskid, at.activityid, at.billingrateid, at.timeoffcodeid, at.breaktypeid, at.timeentryinfo1, at.timeentryinf (...)
26. 33.624 73.925 ↓ 1.0 94,030 1

Hash (cost=2,930.72..2,930.72 rows=93,202 width=20) (actual time=73.925..73.925 rows=94,030 loops=1)

  • Output: ts_2.userid, ts_2.id
  • Buckets: 131072 Batches: 1 Memory Usage: 5799kB
27. 40.301 40.301 ↓ 1.0 94,030 1

Seq Scan on bepdt123.timesheet ts_2 (cost=0.00..2,930.72 rows=93,202 width=20) (actual time=0.012..40.301 rows=94,030 loops=1)

  • Output: ts_2.userid, ts_2.id
  • Filter: ((ts_2.startdate >= '2014-10-14'::date) AND (ts_2.startdate <= '2018-12-01'::date) AND (ts_2.enddate >= '2014-10-14'::date) AND (ts_2.enddate <= '2018-12-01'::date))
  • Rows Removed by Filter: 819
28. 0.001 0.009 ↓ 0.0 0 1

Hash (cost=2.04..2.04 rows=1 width=16) (actual time=0.009..0.009 rows=0 loops=1)

  • Output: pj_2.id, pc_1.effectivedate, pc_1.enddate, pc_1.clientid
  • Buckets: 1024 Batches: 1 Memory Usage: 8kB
29. 0.001 0.008 ↓ 0.0 0 1

Nested Loop (cost=0.00..2.04 rows=1 width=16) (actual time=0.008..0.008 rows=0 loops=1)

  • Output: pj_2.id, pc_1.effectivedate, pc_1.enddate, pc_1.clientid
  • Join Filter: (pj_2.id = pc_1.projectid)
30. 0.007 0.007 ↓ 0.0 0 1

Seq Scan on bepdt123.project pj_2 (cost=0.00..1.01 rows=1 width=4) (actual time=0.007..0.007 rows=0 loops=1)

  • Output: pj_2.id
  • Filter: (pj_2.clientbillingallocationmethod = 1)
  • Rows Removed by Filter: 1
31. 0.000 0.000 ↓ 0.0 0

Seq Scan on bepdt123.projectclient pc_1 (cost=0.00..1.01 rows=1 width=16) (never executed)

  • Output: pc_1.id, pc_1.projectid, pc_1.clientid, pc_1.costallocationpercentage, pc_1.effectivedate, pc_1.enddate
32. 0.004 0.024 ↑ 1.0 1 1

Hash (cost=2.04..2.04 rows=1 width=44) (actual time=0.024..0.024 rows=1 loops=1)

  • Output: pj_1.id, pc.effectivedate, pc.enddate, ((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric))
  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
33. 0.007 0.020 ↑ 1.0 1 1

Nested Loop (cost=0.00..2.04 rows=1 width=44) (actual time=0.019..0.020 rows=1 loops=1)

  • Output: pj_1.id, pc.effectivedate, pc.enddate, ((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric))
  • Join Filter: (pj_1.id = pc.projectid)
34. 0.005 0.005 ↑ 1.0 1 1

Seq Scan on bepdt123.project pj_1 (cost=0.00..1.01 rows=1 width=4) (actual time=0.004..0.005 rows=1 loops=1)

  • Output: pj_1.id
  • Filter: (pj_1.clientbillingallocationmethod = 0)
35. 0.008 0.008 ↑ 1.0 1 1

Seq Scan on bepdt123.projectclient pc (cost=0.00..1.01 rows=1 width=44) (actual time=0.008..0.008 rows=1 loops=1)

  • Output: pc.projectid, pc.effectivedate, pc.enddate, (COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)
36. 0.379 1.088 ↑ 1.0 1,311 1

Hash (cost=55.11..55.11 rows=1,311 width=5) (actual time=1.088..1.088 rows=1,311 loops=1)

  • Output: ui_1.duplicatename, ui_1.id
  • Buckets: 2048 Batches: 1 Memory Usage: 68kB
37. 0.709 0.709 ↑ 1.0 1,311 1

Seq Scan on bepdt123.userinfo ui_1 (cost=0.00..55.11 rows=1,311 width=5) (actual time=0.005..0.709 rows=1,311 loops=1)

  • Output: ui_1.duplicatename, ui_1.id
38. 41.828 261.152 ↓ 1.0 94,849 1

Hash (cost=18,437.47..18,437.47 rows=94,836 width=36) (actual time=261.152..261.152 rows=94,849 loops=1)

  • Output: ts_3.enddate, ts_3.id, tslist_1.timesheetid
  • Buckets: 131072 Batches: 1 Memory Usage: 7323kB
39. 93.578 219.324 ↓ 1.0 94,849 1

Merge Join (cost=0.83..18,437.47 rows=94,836 width=36) (actual time=0.027..219.324 rows=94,849 loops=1)

  • Output: ts_3.enddate, ts_3.id, tslist_1.timesheetid
  • Merge Cond: (ts_3.id = tslist_1.timesheetid)
40. 70.803 70.803 ↓ 1.0 94,849 1

Index Scan using timesheet_pkey on bepdt123.timesheet ts_3 (cost=0.42..2,846.96 rows=94,836 width=20) (actual time=0.005..70.803 rows=94,849 loops=1)

  • Output: ts_3.id, ts_3.userid, ts_3.startdate, ts_3.enddate, ts_3.approvalstatus, ts_3.duedate, ts_3.autosubmitdatetimeutc, ts_3.lastautosubmitattemptdatetimeutc, ts_3.createdonutc
41. 54.943 54.943 ↓ 1.0 94,850 1

Index Only Scan using dm_timesheetlist_facts_pkey on bepdt123.dm_timesheetlist_facts tslist_1 (cost=0.42..14,167.97 rows=94,837 width=16) (actual time=0.018..54.943 rows=94,850 loops=1)

  • Output: tslist_1.timesheetid
  • Heap Fetches: 92983
42.          

Initplan (forSort)

43. 0.002 0.002 ↑ 1.0 1 1

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

  • Output: systeminformation.basecurrencyid
44. 432.012 362,921.360 ↑ 1.5 456,266 1

Hash Left Join (cost=41,265.70..88,036.21 rows=676,363 width=342) (actual time=358,759.834..362,921.360 rows=456,266 loops=1)

  • Output: pj.name, tk.name, tk.id, ui.lastname, ui.firstname, dmv_timesheetday_facts8.userduplicatename6, login.loginname, ui.id, ui.info2, ui.info1, dmv_timesheetday_facts8.timesheetenddate7, ui.info8, employeetype10.name, tk.code, ui.email, ui.info (...)
  • Hash Cond: (dmv_timesheetday_facts8.currencyid10 = currencyinfo11.id)
45. 373.174 362,489.334 ↑ 1.5 456,266 1

Hash Join (cost=41,264.54..85,261.96 rows=676,363 width=342) (actual time=358,759.797..362,489.334 rows=456,266 loops=1)

  • Output: ta.timestamputc, dmv_timesheetday_facts8.userduplicatename6, dmv_timesheetday_facts8.timesheetenddate7, dmv_timesheetday_facts8.timeentryinfo14, dmv_timesheetday_facts8.timeallocationid5, dmv_timesheetday_facts8.hourlyrate3, dmv_times (...)
  • Hash Cond: (dmv_timesheetday_facts8.timesheetid11 = ts.id)
46. 308.736 361,075.270 ↑ 1.5 456,266 1

Hash Left Join (cost=209.35..34,906.77 rows=676,363 width=350) (actual time=357,718.425..361,075.270 rows=456,266 loops=1)

  • Output: dmv_timesheetday_facts8.userduplicatename6, dmv_timesheetday_facts8.timesheetenddate7, dmv_timesheetday_facts8.timeentryinfo14, dmv_timesheetday_facts8.timeallocationid5, dmv_timesheetday_facts8.hourlyrate3, dmv_timesheetday_fac (...)
  • Hash Cond: (dmv_timesheetday_facts8.projectid8 = pj.id)
47. 325.419 360,766.527 ↑ 1.5 456,266 1

Hash Left Join (cost=208.32..32,335.57 rows=676,363 width=324) (actual time=357,718.408..360,766.527 rows=456,266 loops=1)

  • Output: dmv_timesheetday_facts8.userduplicatename6, dmv_timesheetday_facts8.timesheetenddate7, dmv_timesheetday_facts8.timeentryinfo14, dmv_timesheetday_facts8.timeallocationid5, dmv_timesheetday_facts8.hourlyrate3, dmv_timesheetd (...)
  • Hash Cond: (dmv_timesheetday_facts8.taskid9 = tk.id)
48. 352.248 360,440.504 ↑ 1.5 456,266 1

Hash Join (cost=179.34..23,006.59 rows=676,363 width=276) (actual time=357,717.790..360,440.504 rows=456,266 loops=1)

  • Output: dmv_timesheetday_facts8.userduplicatename6, dmv_timesheetday_facts8.timesheetenddate7, dmv_timesheetday_facts8.timeentryinfo14, dmv_timesheetday_facts8.timeallocationid5, dmv_timesheetday_facts8.hourlyrate3, dmv_time (...)
  • Hash Cond: (dmv_timesheetday_facts8.userid2 = ui.id)
49. 360,084.252 360,084.252 ↑ 1.5 456,266 1

CTE Scan on dmv_timesheetday_facts0cte dmv_timesheetday_facts8 (cost=0.00..13,527.26 rows=676,363 width=153) (actual time=357,713.769..360,084.252 rows=456,266 loops=1)

  • Output: dmv_timesheetday_facts8.billingamount0, dmv_timesheetday_facts8.billableduration1, dmv_timesheetday_facts8.userid2, dmv_timesheetday_facts8.hourlyrate3, dmv_timesheetday_facts8.timeentryinfo14, dmv_timesheetday (...)
50. 0.881 4.004 ↑ 1.0 1,311 1

Hash (cost=162.95..162.95 rows=1,311 width=127) (actual time=4.004..4.004 rows=1,311 loops=1)

  • Output: ui.lastname, ui.firstname, ui.id, ui.info2, ui.info1, ui.info8, ui.email, ui.info4, login.loginname, login.userid, employeetype10.name
  • Buckets: 2048 Batches: 1 Memory Usage: 226kB
51. 0.699 3.123 ↑ 1.0 1,311 1

Hash Join (cost=71.79..162.95 rows=1,311 width=127) (actual time=0.903..3.123 rows=1,311 loops=1)

  • Output: ui.lastname, ui.firstname, ui.id, ui.info2, ui.info1, ui.info8, ui.email, ui.info4, login.loginname, login.userid, employeetype10.name
  • Hash Cond: (ui.employeetypeid = employeetype10.id)
52. 1.176 2.409 ↑ 1.0 1,311 1

Hash Join (cost=70.50..143.63 rows=1,311 width=113) (actual time=0.880..2.409 rows=1,311 loops=1)

  • Output: ui.lastname, ui.firstname, ui.id, ui.info2, ui.info1, ui.info8, ui.email, ui.info4, ui.employeetypeid, login.loginname, login.userid
  • Hash Cond: (ui.id = login.userid)
53. 0.367 0.367 ↑ 1.0 1,311 1

Seq Scan on bepdt123.userinfo ui (cost=0.00..55.11 rows=1,311 width=96) (actual time=0.003..0.367 rows=1,311 loops=1)

  • Output: ui.id, ui.firstname, ui.lastname, ui.slug, ui.email, ui.startdate, ui.enddate, ui.externalid, ui.disabled, ui.info1, ui.info2, ui.info3, ui.info4, ui.info5, ui.info6, ui.info7, ui.info8, ui.in (...)
54. 0.444 0.866 ↑ 1.0 1,311 1

Hash (cost=54.11..54.11 rows=1,311 width=17) (actual time=0.866..0.866 rows=1,311 loops=1)

  • Output: login.loginname, login.userid
  • Buckets: 2048 Batches: 1 Memory Usage: 82kB
55. 0.422 0.422 ↑ 1.0 1,311 1

Seq Scan on bepdt123.login (cost=0.00..54.11 rows=1,311 width=17) (actual time=0.003..0.422 rows=1,311 loops=1)

  • Output: login.loginname, login.userid
56. 0.004 0.015 ↑ 1.0 13 1

Hash (cost=1.13..1.13 rows=13 width=22) (actual time=0.015..0.015 rows=13 loops=1)

  • Output: employeetype10.name, employeetype10.id
  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
57. 0.011 0.011 ↑ 1.0 13 1

Seq Scan on bepdt123.employeetype employeetype10 (cost=0.00..1.13 rows=13 width=22) (actual time=0.005..0.011 rows=13 loops=1)

  • Output: employeetype10.name, employeetype10.id
58. 0.185 0.604 ↑ 1.0 437 1

Hash (cost=23.52..23.52 rows=437 width=52) (actual time=0.604..0.604 rows=437 loops=1)

  • Output: tk.name, tk.id, tk.code
  • Buckets: 1024 Batches: 1 Memory Usage: 45kB
59. 0.258 0.419 ↑ 1.0 437 1

Hash Left Join (cost=2.44..23.52 rows=437 width=52) (actual time=0.046..0.419 rows=437 loops=1)

  • Output: tk.name, tk.id, tk.code
  • Hash Cond: (tk.estimatedcostcurrencyid = exchangerate.fixedcurrencyid)
60. 0.128 0.128 ↑ 1.0 437 1

Seq Scan on bepdt123.task tk (cost=0.00..14.37 rows=437 width=56) (actual time=0.004..0.128 rows=437 loops=1)

  • Output: tk.id, tk.projectid, tk.parentid, tk.name, tk.code, tk.description, tk.isclosed, tk.orderindex, tk.percentcomplete, tk.istimeentryallowed, tk.estimatedhours, tk.timeentrystartdate, tk.timeentryenddate, tk (...)
61. 0.005 0.033 ↑ 1.0 7 1

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

  • Output: exchangerate.fixedcurrencyid
  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
62. 0.028 0.028 ↑ 1.0 7 1

Seq Scan on bepdt123.exchangerate (cost=0.00..2.35 rows=7 width=4) (actual time=0.018..0.028 rows=7 loops=1)

  • Output: exchangerate.fixedcurrencyid
  • Filter: ((exchangerate.variablecurrencyid = $11) AND (('now'::cstring)::date >= exchangerate.effectivedate) AND (('now'::cstring)::date <= exchangerate.enddate))
  • Rows Removed by Filter: 42
63. 0.005 0.007 ↑ 1.0 1 1

Hash (cost=1.01..1.01 rows=1 width=34) (actual time=0.007..0.007 rows=1 loops=1)

  • Output: pj.name, pj.id
  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
64. 0.002 0.002 ↑ 1.0 1 1

Seq Scan on bepdt123.project pj (cost=0.00..1.01 rows=1 width=34) (actual time=0.002..0.002 rows=1 loops=1)

  • Output: pj.name, pj.id
65. 63.039 1,040.890 ↓ 1.0 94,849 1

Hash (cost=39,869.75..39,869.75 rows=94,836 width=40) (actual time=1,040.890..1,040.890 rows=94,849 loops=1)

  • Output: ts.id, ta.timestamputc, tslist.timesheetid
  • Buckets: 131072 Batches: 1 Memory Usage: 7687kB
66. 121.026 977.851 ↓ 1.0 94,849 1

Hash Left Join (cost=20,644.58..39,869.75 rows=94,836 width=40) (actual time=564.579..977.851 rows=94,849 loops=1)

  • Output: ts.id, ta.timestamputc, tslist.timesheetid
  • Hash Cond: (ts.id = tahls.timesheetid)
67. 126.662 292.758 ↓ 1.0 94,849 1

Merge Join (cost=0.83..17,936.47 rows=94,836 width=32) (actual time=0.034..292.758 rows=94,849 loops=1)

  • Output: ts.id, tslist.timesheetid
  • Merge Cond: (ts.id = tslist.timesheetid)
68. 76.080 76.080 ↓ 1.0 94,849 1

Index Only Scan using timesheet_pkey on bepdt123.timesheet ts (cost=0.42..2,345.96 rows=94,836 width=16) (actual time=0.018..76.080 rows=94,849 loops=1)

  • Output: ts.id
  • Heap Fetches: 46673
69. 90.016 90.016 ↓ 1.0 94,850 1

Index Only Scan using dm_timesheetlist_facts_pkey on bepdt123.dm_timesheetlist_facts tslist (cost=0.42..14,167.97 rows=94,837 width=16) (actual time=0.012..90.016 rows=94,850 loops=1)

  • Output: tslist.timesheetid
  • Heap Fetches: 93033
70. 42.604 564.067 ↓ 1.0 94,044 1

Hash (cost=19,476.39..19,476.39 rows=93,389 width=24) (actual time=564.067..564.067 rows=94,044 loops=1)

  • Output: tahls.timesheetid, ta.timestamputc
  • Buckets: 131072 Batches: 1 Memory Usage: 6168kB
71. 83.693 521.463 ↓ 1.0 94,044 1

Hash Join (cost=6,118.23..19,476.39 rows=93,389 width=24) (actual time=132.440..521.463 rows=94,044 loops=1)

  • Output: tahls.timesheetid, ta.timestamputc
  • Hash Cond: (tahls.timesheetid = ts_1.id)
72. 213.236 371.374 ↑ 1.0 94,067 1

Hash Join (cost=2,723.57..14,794.57 rows=94,203 width=24) (actual time=65.567..371.374 rows=94,067 loops=1)

  • Output: tahls.timesheetid, ta.timestamputc
  • Hash Cond: (ta.serialnumber = tahls.lastsubmitserialnumber)
73. 93.069 93.069 ↓ 1.0 373,742 1

Seq Scan on bepdt123.timesheetapprovalhistory ta (cost=0.00..9,727.71 rows=373,671 width=12) (actual time=0.002..93.069 rows=373,742 loops=1)

  • Output: ta.id, ta.action, ta.approvalcomments, ta.timestamputc, ta.serialnumber, ta.timesheetid, ta.approvalagenttype, ta.userid, ta.systemprocessidentifier
74. 34.715 65.069 ↑ 1.0 94,067 1

Hash (cost=1,546.03..1,546.03 rows=94,203 width=20) (actual time=65.069..65.069 rows=94,067 loops=1)

  • Output: tahls.lastsubmitserialnumber, tahls.timesheetid
  • Buckets: 131072 Batches: 1 Memory Usage: 5801kB
75. 30.354 30.354 ↑ 1.0 94,067 1

Seq Scan on bepdt123.timesheetapprovalhistorylastsubmit tahls (cost=0.00..1,546.03 rows=94,203 width=20) (actual time=0.432..30.354 rows=94,067 loops=1)

  • Output: tahls.lastsubmitserialnumber, tahls.timesheetid
76. 32.055 66.396 ↓ 1.0 94,052 1

Hash (cost=2,219.45..2,219.45 rows=94,017 width=16) (actual time=66.396..66.396 rows=94,052 loops=1)

  • Output: ts_1.id
  • Buckets: 131072 Batches: 1 Memory Usage: 5433kB
77. 34.341 34.341 ↓ 1.0 94,052 1

Seq Scan on bepdt123.timesheet ts_1 (cost=0.00..2,219.45 rows=94,017 width=16) (actual time=0.016..34.341 rows=94,052 loops=1)

  • Output: ts_1.id
  • Filter: (ts_1.approvalstatus = ANY ('{1,2}'::integer[]))
  • Rows Removed by Filter: 797
78. 0.009 0.014 ↑ 1.0 7 1

Hash (cost=1.07..1.07 rows=7 width=8) (actual time=0.014..0.014 rows=7 loops=1)

  • Output: currencyinfo11.symbol, currencyinfo11.id
  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
79. 0.005 0.005 ↑ 1.0 7 1

Seq Scan on bepdt123.currencyinfo currencyinfo11 (cost=0.00..1.07 rows=7 width=8) (actual time=0.003..0.005 rows=7 loops=1)

  • Output: currencyinfo11.symbol, currencyinfo11.id