explain.depesz.com

PostgreSQL's explain analyze made readable

Result: yB4t

Settings
# exclusive inclusive rows x rows loops node
1. 5,178.519 364,813.732 ↑ 1.5 456,271 1

Sort (cost=1,396,512.04..1,398,200.71 rows=675,468 width=342) (actual time=364,685.435..364,813.732 rows=456,271 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: 233937kB
2.          

CTE dmv_timesheetday_facts0cte

3. 1,595.501 356,436.458 ↑ 1.5 456,271 1

GroupAggregate (cost=1,194,161.32..1,243,132.75 rows=675,468 width=158) (actual time=354,669.597..356,436.458 rows=456,271 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.008 0.008 ↑ 1.0 1 1

Seq Scan on bepdt123.projectsysteminformation (cost=0.00..1.01 rows=1 width=16) (actual time=0.007..0.008 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,772.434 354,840.947 ↑ 1.5 456,271 1

Sort (cost=1,194,159.30..1,195,847.97 rows=675,468 width=158) (actual time=354,669.552..354,840.947 rows=456,271 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: 126932kB
8. 946.114 353,068.513 ↑ 1.5 456,271 1

Hash Join (cost=59,402.99..1,128,755.33 rows=675,468 width=158) (actual time=1,661.253..353,068.513 rows=456,271 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. 381.756 351,829.229 ↑ 1.5 456,271 1

Hash Join (cost=39,780.07..1,096,467.39 rows=675,468 width=170) (actual time=1,367.930..351,829.229 rows=456,271 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. 667.632 351,446.382 ↑ 1.5 456,271 1

Hash Right Join (cost=39,708.57..1,087,108.20 rows=675,468 width=169) (actual time=1,366.817..351,446.382 rows=456,271 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. 588.818 349,436.060 ↑ 1.7 395,655 1

Nested Loop (cost=1.12..1,038,056.48 rows=690,556 width=42) (actual time=23.843..349,436.060 rows=395,655 loops=1)

  • Output: dm_attendancetimeallocation_facts.duration, dm_attendancetimeallocation_facts.id, pbrh.hourlyrate, pbrh.currencyid
12. 565.621 346,868.967 ↓ 5.6 395,655 1

Nested Loop (cost=0.70..975,087.16 rows=70,576 width=50) (actual time=23.797..346,868.967 rows=395,655 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: 395655
13. 234.554 345,907.691 ↓ 4.8 395,655 1

Nested Loop (cost=0.70..972,637.09 rows=81,635 width=82) (actual time=23.783..345,907.691 rows=395,655 loops=1)

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

Seq Scan on bepdt123.projectbillingrate pbr (cost=0.00..32.44 rows=649 width=40) (actual time=0.030..2.721 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. 285.048 345,670.416 ↓ 3.1 305 1,296

Nested Loop (cost=0.70..1,497.64 rows=98 width=86) (actual time=101.887..266.721 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. 345,375.000 345,375.000 ↓ 2.2 220 1,800

Index Scan using ixata2projectid on bepdt123.dm_attendancetimeallocation_facts (cost=0.42..1,496.32 rows=98 width=60) (actual time=83.855..191.875 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: 292149
18. 395.650 395.655 ↑ 1.0 2 395,655

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

  • 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.275 1,978.275 ↑ 8.0 1 395,655

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

  • 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: 196494
21. 248.663 1,342.690 ↓ 1.0 456,271 1

Hash (cost=34,089.72..34,089.72 rows=449,419 width=143) (actual time=1,342.690..1,342.690 rows=456,271 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: 71551kB
22. 304.541 1,094.027 ↓ 1.0 456,271 1

Hash Left Join (cost=4,099.84..34,089.72 rows=449,419 width=143) (actual time=72.024..1,094.027 rows=456,271 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.117 789.462 ↓ 1.0 456,271 1

Hash Left Join (cost=4,097.80..26,415.19 rows=449,419 width=115) (actual time=71.990..789.462 rows=456,271 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. 339.289 564.339 ↓ 1.0 456,271 1

Hash Join (cost=4,095.75..23,042.48 rows=449,419 width=119) (actual time=71.974..564.339 rows=456,271 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. 153.228 153.228 ↓ 1.0 459,462 1

Seq Scan on bepdt123.dm_attendancetimeallocation_facts at (cost=0.00..12,729.58 rows=459,458 width=99) (actual time=0.009..153.228 rows=459,462 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. 31.575 71.822 ↓ 1.0 94,030 1

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

  • Output: ts_2.userid, ts_2.id
  • Buckets: 131072 Batches: 1 Memory Usage: 5799kB
27. 40.247 40.247 ↓ 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.011..40.247 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: 821
28. 0.000 0.006 ↓ 0.0 0 1

Hash (cost=2.04..2.04 rows=1 width=16) (actual time=0.006..0.006 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.006 ↓ 0.0 0 1

Nested Loop (cost=0.00..2.04 rows=1 width=16) (actual time=0.006..0.006 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.005 0.005 ↓ 0.0 0 1

Seq Scan on bepdt123.project pj_2 (cost=0.00..1.01 rows=1 width=4) (actual time=0.005..0.005 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.002 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.022 ↑ 1.0 1 1

Nested Loop (cost=0.00..2.04 rows=1 width=44) (actual time=0.020..0.022 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.004 0.004 ↑ 1.0 1 1

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

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

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

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

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

  • Output: ui_1.duplicatename, ui_1.id
  • Buckets: 2048 Batches: 1 Memory Usage: 68kB
37. 0.714 0.714 ↑ 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.006..0.714 rows=1,311 loops=1)

  • Output: ui_1.duplicatename, ui_1.id
38. 39.377 293.170 ↓ 1.0 94,851 1

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

  • Output: ts_3.enddate, ts_3.id, tslist_1.timesheetid
  • Buckets: 131072 Batches: 1 Memory Usage: 7323kB
39. 91.627 253.793 ↓ 1.0 94,851 1

Merge Join (cost=0.83..18,437.47 rows=94,836 width=36) (actual time=0.043..253.793 rows=94,851 loops=1)

  • Output: ts_3.enddate, ts_3.id, tslist_1.timesheetid
  • Merge Cond: (ts_3.id = tslist_1.timesheetid)
40. 76.267 76.267 ↓ 1.0 94,851 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.006..76.267 rows=94,851 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. 85.899 85.899 ↓ 1.0 94,852 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.034..85.899 rows=94,852 loops=1)

  • Output: tslist_1.timesheetid
  • Heap Fetches: 93112
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. 402.051 359,635.211 ↑ 1.5 456,271 1

Hash Left Join (cost=41,265.70..87,974.31 rows=675,468 width=342) (actual time=355,588.649..359,635.211 rows=456,271 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. 374.503 359,233.148 ↑ 1.5 456,271 1

Hash Join (cost=41,264.54..85,203.73 rows=675,468 width=342) (actual time=355,588.622..359,233.148 rows=456,271 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. 296.770 357,944.147 ↑ 1.5 456,271 1

Hash Left Join (cost=209.35..34,860.85 rows=675,468 width=350) (actual time=354,673.979..357,944.147 rows=456,271 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. 322.611 357,647.372 ↑ 1.5 456,271 1

Hash Left Join (cost=208.32..32,293.05 rows=675,468 width=324) (actual time=354,673.968..357,647.372 rows=456,271 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. 350.660 357,324.151 ↑ 1.5 456,271 1

Hash Join (cost=179.34..22,976.39 rows=675,468 width=276) (actual time=354,673.351..357,324.151 rows=456,271 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. 356,969.756 356,969.756 ↑ 1.5 456,271 1

CTE Scan on dmv_timesheetday_facts0cte dmv_timesheetday_facts8 (cost=0.00..13,509.36 rows=675,468 width=153) (actual time=354,669.601..356,969.756 rows=456,271 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.777 3.735 ↑ 1.0 1,311 1

Hash (cost=162.95..162.95 rows=1,311 width=127) (actual time=3.735..3.735 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.704 2.958 ↑ 1.0 1,311 1

Hash Join (cost=71.79..162.95 rows=1,311 width=127) (actual time=0.844..2.958 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.083 2.238 ↑ 1.0 1,311 1

Hash Join (cost=70.50..143.63 rows=1,311 width=113) (actual time=0.822..2.238 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.353 0.353 ↑ 1.0 1,311 1

Seq Scan on bepdt123.userinfo ui (cost=0.00..55.11 rows=1,311 width=96) (actual time=0.004..0.353 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.395 0.802 ↑ 1.0 1,311 1

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

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

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

  • Output: login.loginname, login.userid
56. 0.008 0.016 ↑ 1.0 13 1

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

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

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

  • Output: employeetype10.name, employeetype10.id
58. 0.191 0.610 ↑ 1.0 437 1

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

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

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

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

Seq Scan on bepdt123.task tk (cost=0.00..14.37 rows=437 width=56) (actual time=0.005..0.136 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.031 ↑ 1.0 7 1

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

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

Seq Scan on bepdt123.exchangerate (cost=0.00..2.35 rows=7 width=4) (actual time=0.018..0.026 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.002 0.005 ↑ 1.0 1 1

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

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

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

  • Output: pj.name, pj.id
65. 48.189 914.498 ↓ 1.0 94,851 1

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

  • Output: ts.id, ta.timestamputc, tslist.timesheetid
  • Buckets: 131072 Batches: 1 Memory Usage: 7687kB
66. 91.328 866.309 ↓ 1.0 94,851 1

Hash Left Join (cost=20,644.58..39,869.75 rows=94,836 width=40) (actual time=542.005..866.309 rows=94,851 loops=1)

  • Output: ts.id, ta.timestamputc, tslist.timesheetid
  • Hash Cond: (ts.id = tahls.timesheetid)
67. 91.447 233.145 ↓ 1.0 94,851 1

Merge Join (cost=0.83..17,936.47 rows=94,836 width=32) (actual time=0.027..233.145 rows=94,851 loops=1)

  • Output: ts.id, tslist.timesheetid
  • Merge Cond: (ts.id = tslist.timesheetid)
68. 57.109 57.109 ↓ 1.0 94,851 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.014..57.109 rows=94,851 loops=1)

  • Output: ts.id
  • Heap Fetches: 46676
69. 84.589 84.589 ↓ 1.0 94,852 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.009..84.589 rows=94,852 loops=1)

  • Output: tslist.timesheetid
  • Heap Fetches: 93165
70. 40.044 541.836 ↓ 1.0 94,052 1

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

  • Output: tahls.timesheetid, ta.timestamputc
  • Buckets: 131072 Batches: 1 Memory Usage: 6168kB
71. 79.368 501.792 ↓ 1.0 94,052 1

Hash Join (cost=6,118.23..19,476.39 rows=93,389 width=24) (actual time=125.794..501.792 rows=94,052 loops=1)

  • Output: tahls.timesheetid, ta.timestamputc
  • Hash Cond: (tahls.timesheetid = ts_1.id)
72. 209.576 356.981 ↑ 1.0 94,074 1

Hash Join (cost=2,723.57..14,794.57 rows=94,203 width=24) (actual time=60.211..356.981 rows=94,074 loops=1)

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

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

  • Output: ta.id, ta.action, ta.approvalcomments, ta.timestamputc, ta.serialnumber, ta.timesheetid, ta.approvalagenttype, ta.userid, ta.systemprocessidentifier
74. 32.815 60.054 ↑ 1.0 94,074 1

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

  • Output: tahls.lastsubmitserialnumber, tahls.timesheetid
  • Buckets: 131072 Batches: 1 Memory Usage: 5802kB
75. 27.239 27.239 ↑ 1.0 94,074 1

Seq Scan on bepdt123.timesheetapprovalhistorylastsubmit tahls (cost=0.00..1,546.03 rows=94,203 width=20) (actual time=0.013..27.239 rows=94,074 loops=1)

  • Output: tahls.lastsubmitserialnumber, tahls.timesheetid
76. 32.277 65.443 ↓ 1.0 94,060 1

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

  • Output: ts_1.id
  • Buckets: 131072 Batches: 1 Memory Usage: 5434kB
77. 33.166 33.166 ↓ 1.0 94,060 1

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

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

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

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

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

  • Output: currencyinfo11.symbol, currencyinfo11.id