explain.depesz.com

PostgreSQL's explain analyze made readable

Result: T39B

Settings
# exclusive inclusive rows x rows loops node
1. 150.950 77,945.523 ↓ 187.1 22,454 1

Sort (cost=2,201,239.16..2,201,239.46 rows=120 width=321) (actual time=77,936.122..77,945.523 rows=22,454 loops=1)

  • Output: ((ui.lastname)::character varying(50)), ((ui.firstname)::character varying(50)), dmv_timesheetday_facts5.userduplicatename3, ((login.loginname)::character varying(255)), ui.id, ((userinfo7.displayname)::text), dmv_timesheetday_facts5.timesheetsta (...)
  • Sort Key: ((ui.lastname)::character varying(50)) COLLATE "en_US", ((ui.firstname)::character varying(50)) COLLATE "en_US", dmv_timesheetday_facts5.userduplicatename3, ((login.loginname)::character varying(255)) COLLATE "en_US", ((userinfo7.displayname):: (...)
  • Sort Method: quicksort Memory: 6409kB
2.          

CTE dmv_timesheetday_facts0cte

3. 55.570 77,229.296 ↑ 1.1 22,495 1

HashAggregate (cost=2,199,901.61..2,200,142.28 rows=24,067 width=61) (actual time=77,210.790..77,229.296 rows=22,495 loops=1)

  • Output: sum((CASE WHEN ((at.timeoffcodeid IS NULL) AND (at.breaktypeid IS NULL)) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)), '1'::numeric))::double precision) ELSE '00:00:00'::interval (...)
  • Group Key: ts_1.userid, at.entrydate, ui_1.duplicatename, ts_2.startdate, ts_2.enddate, tslist_1.timesheetstatus, at.projectid, at.taskid, ts_1.id
4. 41.600 77,173.726 ↑ 1.1 22,799 1

Nested Loop (cost=275,357.24..2,199,299.94 rows=24,067 width=61) (actual time=47,668.581..77,173.726 rows=22,799 loops=1)

  • Output: ts_1.userid, ts_1.id, at.entrydate, at.projectid, at.taskid, (CASE WHEN ((at.timeoffcodeid IS NULL) AND (at.breaktypeid IS NULL)) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric (...)
  • Join Filter: (ts_1.id = ts_2.id)
5. 41.614 77,063.729 ↑ 1.1 22,799 1

Nested Loop (cost=275,356.82..2,188,151.53 rows=24,067 width=85) (actual time=47,668.563..77,063.729 rows=22,799 loops=1)

  • Output: ts_1.userid, ts_1.id, at.entrydate, at.projectid, at.taskid, (CASE WHEN ((at.timeoffcodeid IS NULL) AND (at.breaktypeid IS NULL)) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::n (...)
  • Join Filter: (ts_1.id = tslist_1.timesheetid)
6. 736.356 76,885.321 ↑ 1.1 22,799 1

Hash Join (cost=275,356.39..2,176,047.16 rows=24,075 width=65) (actual time=47,668.539..76,885.321 rows=22,799 loops=1)

  • Output: ts_1.userid, ts_1.id, at.entrydate, at.projectid, at.taskid, (CASE WHEN ((at.timeoffcodeid IS NULL) AND (at.breaktypeid IS NULL)) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '1 (...)
  • Hash Cond: (at.timesheetid = ts_1.id)
7. 8,616.098 76,065.180 ↓ 1.0 1,576,868 1

Hash Left Join (cost=266,586.75..2,145,563.67 rows=1,561,680 width=97) (actual time=29,300.878..76,065.180 rows=1,576,868 loops=1)

  • Output: NULL::uuid, NULL::integer, at.entrydate, NULL::uuid, NULL::interval, NULL::text, NULL::integer, NULL::date, at.projectid, at.taskid, NULL::integer, NULL::integer, NULL::uuid, NULL::interval, CASE WHEN ((at.timeoffc (...)
  • Hash Cond: (at.projectid = pj_1.id)
  • Join Filter: ((at.entrydate >= pc.effectivedate) AND (at.entrydate <= pc.enddate))
8. 863.274 67,449.053 ↓ 1.0 1,576,868 1

Hash Left Join (cost=266,570.39..1,213,422.23 rows=1,561,680 width=65) (actual time=29,299.858..67,449.053 rows=1,576,868 loops=1)

  • Output: at.entrydate, at.projectid, at.taskid, at.timeoffcodeid, at.breaktypeid, at.duration, at.timesheetid, isbillable."boolean
  • 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))
9. 5,040.103 66,585.766 ↓ 1.0 1,576,868 1

Hash Right Join (cost=266,563.88..1,201,703.10 rows=1,561,680 width=69) (actual time=29,299.822..66,585.766 rows=1,576,868 loops=1)

  • Output: at.entrydate, at.projectid, at.taskid, at.timeoffcodeid, at.breaktypeid, at.duration, at.timesheetid, at.userspecifiedclientid, isbillable."boolean
  • Hash Cond: (isbillable.factid = at.id)
10. 48,815.746 48,815.746 ↓ 55.6 7,664,133 1

Seq Scan on bgs.dm_attendancetimeallocation_metadata isbillable (cost=0.00..934,207.33 rows=137,917 width=17) (actual time=350.427..48,815.746 rows=7,664,133 loops=1)

  • Output: isbillable.id, isbillable.factid, isbillable.parentid, isbillable.index, isbillable.key, isbillable.uri, isbillable.slug, isbillable."boolean", isbillable.date, isbillable.number, isbillable.text, (...)
  • Filter: (upper(isbillable.key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:IS-BILLABLE'::text)
  • Rows Removed by Filter: 19938277
11. 893.902 12,729.917 ↓ 1.0 1,576,868 1

Hash (cost=247,042.88..247,042.88 rows=1,561,680 width=84) (actual time=12,729.917..12,729.917 rows=1,576,868 loops=1)

  • Output: at.entrydate, at.projectid, at.taskid, at.timeoffcodeid, at.breaktypeid, at.duration, at.timesheetid, at.userspecifiedclientid, at.id
  • Buckets: 2097152 Batches: 1 Memory Usage: 174696kB
12. 11,836.015 11,836.015 ↓ 1.0 1,576,868 1

Seq Scan on bgs.dm_attendancetimeallocation_facts at (cost=0.00..247,042.88 rows=1,561,680 width=84) (actual time=107.221..11,836.015 rows=1,576,868 loops=1)

  • Output: at.entrydate, at.projectid, at.taskid, at.timeoffcodeid, at.breaktypeid, at.duration, at.timesheetid, at.userspecifiedclientid, at.id
  • Filter: ((at.entrydate >= '2018-02-10'::date) AND (at.entrydate <= '2018-08-29'::date))
  • Rows Removed by Filter: 7304986
13. 0.001 0.013 ↓ 0.0 0 1

Hash (cost=6.44..6.44 rows=5 width=16) (actual time=0.013..0.013 rows=0 loops=1)

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

Nested Loop (cost=0.15..6.44 rows=5 width=16) (actual time=0.012..0.012 rows=0 loops=1)

  • Output: pj_2.id, pc_1.effectivedate, pc_1.enddate, pc_1.clientid
15. 0.011 0.011 ↓ 0.0 0 1

Seq Scan on bgs.project pj_2 (cost=0.00..1.15 rows=1 width=4) (actual time=0.011..0.011 rows=0 loops=1)

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

Index Only Scan using uix4pc_projectclienteffectiveend on bgs.projectclient pc_1 (cost=0.15..5.24 rows=5 width=16) (never executed)

  • Output: pc_1.projectid, pc_1.clientid, pc_1.effectivedate, pc_1.enddate
  • Index Cond: (pc_1.projectid = pj_2.id)
  • Heap Fetches: 0
17. 0.000 0.029 ↓ 0.0 0 1

Hash (cost=15.60..15.60 rows=61 width=44) (actual time=0.029..0.029 rows=0 loops=1)

  • Output: pj_1.id, pc.effectivedate, pc.enddate, ((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric))
  • Buckets: 1024 Batches: 1 Memory Usage: 8kB
18. 0.008 0.029 ↓ 0.0 0 1

Nested Loop (cost=0.15..15.60 rows=61 width=44) (actual time=0.029..0.029 rows=0 loops=1)

  • Output: pj_1.id, pc.effectivedate, pc.enddate, ((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric))
19. 0.009 0.009 ↑ 1.0 12 1

Seq Scan on bgs.project pj_1 (cost=0.00..1.15 rows=12 width=4) (actual time=0.004..0.009 rows=12 loops=1)

  • Output: pj_1.id
  • Filter: (pj_1.clientbillingallocationmethod = 0)
20. 0.012 0.012 ↓ 0.0 0 12

Index Scan using uix4pc_projectclienteffectiveend on bgs.projectclient pc (cost=0.15..1.15 rows=5 width=44) (actual time=0.001..0.001 rows=0 loops=12)

  • Output: pc.projectid, pc.effectivedate, pc.enddate, (COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)
  • Index Cond: (pc.projectid = pj_1.id)
21. 6.072 83.785 ↑ 1.0 12,741 1

Hash (cost=8,603.51..8,603.51 rows=13,291 width=21) (actual time=83.785..83.785 rows=12,741 loops=1)

  • Output: ts_1.userid, ts_1.id, ui_1.duplicatename
  • Buckets: 16384 Batches: 1 Memory Usage: 788kB
22. 9.647 77.713 ↑ 1.0 12,741 1

Merge Join (cost=0.82..8,603.51 rows=13,291 width=21) (actual time=1.444..77.713 rows=12,741 loops=1)

  • Output: ts_1.userid, ts_1.id, ui_1.duplicatename
  • Merge Cond: (ui_1.id = ts_1.userid)
23. 4.810 4.810 ↑ 1.0 6,888 1

Index Scan using userinfo_pkey on bgs.userinfo ui_1 (cost=0.28..393.07 rows=7,186 width=5) (actual time=0.004..4.810 rows=6,888 loops=1)

  • Output: ui_1.id, ui_1.firstname, ui_1.lastname, ui_1.slug, ui_1.email, ui_1.startdate, ui_1.enddate, ui_1.externalid, ui_1.disabled, ui_1.info1, ui_1.info2, ui_1.info3, ui_1.info4, ui_1.info5, ui_1.info6, ui_1. (...)
24. 63.256 63.256 ↑ 1.0 12,741 1

Index Scan using uix2tsuseridstartdate on bgs.timesheet ts_1 (cost=0.42..8,026.96 rows=13,291 width=20) (actual time=1.273..63.256 rows=12,741 loops=1)

  • Output: ts_1.id, ts_1.userid, ts_1.startdate, ts_1.enddate, ts_1.approvalstatus, ts_1.duedate, ts_1.autosubmitdatetimeutc, ts_1.lastautosubmitattemptdatetimeutc, ts_1.createdonutc
  • Index Cond: (ts_1.userid = ANY ('{3727,2928,2940,2951,2966,2977,2992,3004,3019,3027,3036,3047,3059,770,788,6088,821,832,4261,853,867,881,1784,109,110,5049,560,915,111,926,942,5335,112,962,581,975,988,601,1000,1 (...)
25. 136.794 136.794 ↑ 1.0 1 22,799

Index Scan using dm_timesheetlist_facts_pkey on bgs.dm_timesheetlist_facts tslist_1 (cost=0.42..0.49 rows=1 width=20) (actual time=0.006..0.006 rows=1 loops=22,799)

  • Output: tslist_1.timesheetid, tslist_1.timesheetslug, tslist_1.timesheetstartdate, tslist_1.timesheetenddate, tslist_1.owneruserid, tslist_1.owneruserslug, tslist_1.owneruserdisplayname, tslist_1.owneruseremployeeid, tslist_1.ow (...)
  • Index Cond: (tslist_1.timesheetid = at.timesheetid)
26. 68.397 68.397 ↑ 1.0 1 22,799

Index Scan using timesheet_pkey on bgs.timesheet ts_2 (cost=0.42..0.45 rows=1 width=24) (actual time=0.003..0.003 rows=1 loops=22,799)

  • Output: ts_2.id, ts_2.userid, ts_2.startdate, ts_2.enddate, ts_2.approvalstatus, ts_2.duedate, ts_2.autosubmitdatetimeutc, ts_2.lastautosubmitattemptdatetimeutc, ts_2.createdonutc
  • Index Cond: (ts_2.id = at.timesheetid)
27.          

Initplan (forSort)

28. 0.011 0.011 ↑ 1.0 1 1

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

  • Output: systeminformation.basecurrencyid
29. 21.570 77,794.562 ↓ 187.1 22,454 1

Nested Loop (cost=21.99..1,091.72 rows=120 width=321) (actual time=77,211.310..77,794.562 rows=22,454 loops=1)

  • Output: ui.lastname, ui.firstname, dmv_timesheetday_facts5.userduplicatename3, login.loginname, ui.id, userinfo7.displayname, dmv_timesheetday_facts5.timesheetstartdate4, dmv_timesheetday_facts5.timesheetenddate5, dmv_timesheetday_facts5.timesheets (...)
30. 34.080 77,683.176 ↓ 187.1 22,454 1

Nested Loop (cost=21.57..1,035.36 rows=120 width=337) (actual time=77,211.293..77,683.176 rows=22,454 loops=1)

  • Output: dmv_timesheetday_facts5.userduplicatename3, dmv_timesheetday_facts5.timesheetstartdate4, dmv_timesheetday_facts5.timesheetenddate5, dmv_timesheetday_facts5.timesheetstatus6, dmv_timesheetday_facts5.entrydate2, dmv_timesheetday_facts5. (...)
31. 15.359 77,581.734 ↓ 187.1 22,454 1

Hash Left Join (cost=21.14..861.06 rows=120 width=321) (actual time=77,211.262..77,581.734 rows=22,454 loops=1)

  • Output: dmv_timesheetday_facts5.userduplicatename3, dmv_timesheetday_facts5.timesheetstartdate4, dmv_timesheetday_facts5.timesheetenddate5, dmv_timesheetday_facts5.timesheetstatus6, dmv_timesheetday_facts5.entrydate2, dmv_timesheetday_f (...)
  • Hash Cond: (tk.id = tdh.taskid)
32. 15.002 77,566.255 ↓ 187.1 22,454 1

Hash Left Join (cost=10.72..848.99 rows=120 width=259) (actual time=77,211.128..77,566.255 rows=22,454 loops=1)

  • Output: dmv_timesheetday_facts5.userduplicatename3, dmv_timesheetday_facts5.timesheetstartdate4, dmv_timesheetday_facts5.timesheetenddate5, dmv_timesheetday_facts5.timesheetstatus6, dmv_timesheetday_facts5.entrydate2, dmv_timeshee (...)
  • Hash Cond: (dmv_timesheetday_facts5.taskid8 = tk.id)
33. 14.727 77,551.031 ↓ 187.1 22,454 1

Hash Left Join (cost=2.40..839.31 rows=120 width=233) (actual time=77,210.891..77,551.031 rows=22,454 loops=1)

  • Output: dmv_timesheetday_facts5.userduplicatename3, dmv_timesheetday_facts5.timesheetstartdate4, dmv_timesheetday_facts5.timesheetenddate5, dmv_timesheetday_facts5.timesheetstatus6, dmv_timesheetday_facts5.entrydate2, dmv_ti (...)
  • Hash Cond: (dmv_timesheetday_facts5.projectid7 = pj.id)
34. 28.426 77,536.281 ↓ 187.1 22,454 1

Nested Loop Left Join (cost=1.13..837.52 rows=120 width=99) (actual time=77,210.842..77,536.281 rows=22,454 loops=1)

  • Output: dmv_timesheetday_facts5.userduplicatename3, dmv_timesheetday_facts5.timesheetstartdate4, dmv_timesheetday_facts5.timesheetenddate5, dmv_timesheetday_facts5.timesheetstatus6, dmv_timesheetday_facts5.entrydate2, (...)
35. 26.680 77,462.947 ↓ 187.1 22,454 1

Nested Loop Left Join (cost=0.85..795.52 rows=120 width=88) (actual time=77,210.835..77,462.947 rows=22,454 loops=1)

  • Output: dmv_timesheetday_facts5.userduplicatename3, dmv_timesheetday_facts5.timesheetstartdate4, dmv_timesheetday_facts5.timesheetenddate5, dmv_timesheetday_facts5.timesheetstatus6, dmv_timesheetday_facts5.entryd (...)
36. 24.427 77,391.359 ↓ 187.1 22,454 1

Nested Loop (cost=0.56..756.31 rows=120 width=84) (actual time=77,210.821..77,391.359 rows=22,454 loops=1)

  • Output: dmv_timesheetday_facts5.userduplicatename3, dmv_timesheetday_facts5.timesheetstartdate4, dmv_timesheetday_facts5.timesheetenddate5, dmv_timesheetday_facts5.timesheetstatus6, dmv_timesheetday_facts5. (...)
  • Join Filter: (dmv_timesheetday_facts5.userid1 = login.userid)
37. 25.560 77,322.024 ↓ 187.1 22,454 1

Nested Loop (cost=0.28..715.71 rows=120 width=78) (actual time=77,210.809..77,322.024 rows=22,454 loops=1)

  • Output: dmv_timesheetday_facts5.userduplicatename3, dmv_timesheetday_facts5.timesheetstartdate4, dmv_timesheetday_facts5.timesheetenddate5, dmv_timesheetday_facts5.timesheetstatus6, dmv_timesheetday_f (...)
38. 77,251.556 77,251.556 ↓ 187.1 22,454 1

CTE Scan on dmv_timesheetday_facts0cte dmv_timesheetday_facts5 (cost=0.00..541.51 rows=120 width=61) (actual time=77,210.801..77,251.556 rows=22,454 loops=1)

  • Output: dmv_timesheetday_facts5.durationworked0, dmv_timesheetday_facts5.userid1, dmv_timesheetday_facts5.entrydate2, dmv_timesheetday_facts5.userduplicatename3, dmv_timesheetday_facts5.timeshee (...)
  • Filter: (dmv_timesheetday_facts5.timesheetstatus6 = 2)
  • Rows Removed by Filter: 41
39. 44.908 44.908 ↑ 1.0 1 22,454

Index Scan using userinfo_pkey on bgs.userinfo ui (cost=0.28..1.44 rows=1 width=17) (actual time=0.002..0.002 rows=1 loops=22,454)

  • 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, (...)
  • Index Cond: (ui.id = dmv_timesheetday_facts5.userid1)
40. 44.908 44.908 ↑ 1.0 1 22,454

Index Scan using login_pkey on bgs.login (cost=0.28..0.33 rows=1 width=10) (actual time=0.002..0.002 rows=1 loops=22,454)

  • Output: login.userid, login.loginname, login.password, login.authenticationtype, login.accountexpiry, login.passwordlastchanged, login.forcepasswordchange, login.disablepasswordchange, login.info1, lo (...)
  • Index Cond: (login.userid = ui.id)
41. 44.908 44.908 ↑ 1.0 1 22,454

Index Scan using ix3uh_usersuperstart on bgs.userhierarchy userhierarchy12 (cost=0.28..0.32 rows=1 width=8) (actual time=0.002..0.002 rows=1 loops=22,454)

  • Output: userhierarchy12.id, userhierarchy12.userid, userhierarchy12.supervisorid, userhierarchy12.startdate, userhierarchy12.enddate
  • Index Cond: ((ui.id = userhierarchy12.userid) AND ('2019-02-10'::date >= userhierarchy12.startdate))
  • Filter: ('2019-02-10'::date <= userhierarchy12.enddate)
42. 44.908 44.908 ↑ 1.0 1 22,454

Index Scan using userinfo_pkey on bgs.userinfo userinfo7 (cost=0.28..0.34 rows=1 width=19) (actual time=0.002..0.002 rows=1 loops=22,454)

  • Output: userinfo7.id, userinfo7.firstname, userinfo7.lastname, userinfo7.slug, userinfo7.email, userinfo7.startdate, userinfo7.enddate, userinfo7.externalid, userinfo7.disabled, userinfo7.info1, userinfo7.info2, (...)
  • Index Cond: (userhierarchy12.supervisorid = userinfo7.id)
43. 0.016 0.023 ↑ 1.0 12 1

Hash (cost=1.12..1.12 rows=12 width=138) (actual time=0.023..0.023 rows=12 loops=1)

  • Output: pj.name, pj.id, pj.code
  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
44. 0.007 0.007 ↑ 1.0 12 1

Seq Scan on bgs.project pj (cost=0.00..1.12 rows=12 width=138) (actual time=0.003..0.007 rows=12 loops=1)

  • Output: pj.name, pj.id, pj.code
45. 0.057 0.222 ↑ 1.0 152 1

Hash (cost=6.42..6.42 rows=152 width=30) (actual time=0.222..0.222 rows=152 loops=1)

  • Output: tk.name, tk.id, tk.code
  • Buckets: 1024 Batches: 1 Memory Usage: 18kB
46. 0.092 0.165 ↑ 1.0 152 1

Hash Left Join (cost=1.13..6.42 rows=152 width=30) (actual time=0.047..0.165 rows=152 loops=1)

  • Output: tk.name, tk.id, tk.code
  • Hash Cond: (tk.estimatedcostcurrencyid = exchangerate.fixedcurrencyid)
47. 0.039 0.039 ↑ 1.0 152 1

Seq Scan on bgs.task tk (cost=0.00..4.52 rows=152 width=34) (actual time=0.002..0.039 rows=152 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 (...)
48. 0.005 0.034 ↑ 1.0 2 1

Hash (cost=1.11..1.11 rows=2 width=4) (actual time=0.034..0.034 rows=2 loops=1)

  • Output: exchangerate.fixedcurrencyid
  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
49. 0.029 0.029 ↑ 1.0 2 1

Seq Scan on bgs.exchangerate (cost=0.00..1.11 rows=2 width=4) (actual time=0.028..0.029 rows=2 loops=1)

  • Output: exchangerate.fixedcurrencyid
  • Filter: ((exchangerate.variablecurrencyid = $4) AND (('now'::cstring)::date >= exchangerate.effectivedate) AND (('now'::cstring)::date <= exchangerate.enddate))
  • Rows Removed by Filter: 2
50. 0.067 0.120 ↑ 1.0 152 1

Hash (cost=8.52..8.52 rows=152 width=66) (actual time=0.120..0.120 rows=152 loops=1)

  • Output: tdh.hierarchysorting, tdh.hierarchytaskname, tdh.taskid
  • Buckets: 1024 Batches: 1 Memory Usage: 23kB
51. 0.053 0.053 ↑ 1.0 152 1

Seq Scan on bgs.taskdenormalizedhierarchy tdh (cost=0.00..8.52 rows=152 width=66) (actual time=0.003..0.053 rows=152 loops=1)

  • Output: tdh.hierarchysorting, tdh.hierarchytaskname, tdh.taskid
52. 67.362 67.362 ↑ 1.0 1 22,454

Index Only Scan using timesheet_pkey on bgs.timesheet ts (cost=0.42..1.44 rows=1 width=16) (actual time=0.003..0.003 rows=1 loops=22,454)

  • Output: ts.id
  • Index Cond: (ts.id = dmv_timesheetday_facts5.timesheetid9)
  • Heap Fetches: 195
53. 89.816 89.816 ↑ 1.0 1 22,454

Index Only Scan using dm_timesheetlist_facts_pkey on bgs.dm_timesheetlist_facts tslist (cost=0.42..0.46 rows=1 width=16) (actual time=0.003..0.004 rows=1 loops=22,454)

  • Output: tslist.timesheetid
  • Index Cond: (tslist.timesheetid = ts.id)
  • Heap Fetches: 4784