explain.depesz.com

PostgreSQL's explain analyze made readable

Result: Q8F2

Settings
# exclusive inclusive rows x rows loops node
1. 1.333 1,807,406.028 ↓ 378.0 378 1

Sort (cost=189,431.63..189,431.63 rows=1 width=190) (actual time=1,807,405.937..1,807,406.028 rows=378 loops=1)

  • Output: dmv_timesheetday_facts5.entrydate4, dmv_timesheetday_facts5.entrydate5, ((ui.lastname)::character varying(50)), ((ui.firstname)::character varying(50)), dmv_timesheetday_facts5.userduplicatename6, ((login.loginname)::character varying(255)), ui.id, ((pj.name)::character varying(255)), pj.id, ((tdh.hierarchysorting)::text), ((tdh.hierarchytaskname)::text), dmv_timesheetday_facts5.billableduration0, dmv_timesheetday_facts5.nonbillableduration1, dmv_timesheetday_facts5.totalduration2, dmv_timesheetday_facts5.userid3
  • Sort Key: dmv_timesheetday_facts5.entrydate4, dmv_timesheetday_facts5.entrydate5, ((ui.lastname)::character varying(50)) COLLATE "en_US", ((ui.firstname)::character varying(50)) COLLATE "en_US", dmv_timesheetday_facts5.userduplicatename6, ((login.loginname)::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
  • Sort Method: quicksort Memory: 136kB
  • Buffers: shared hit=521906221 read=54272
2.          

CTE dmv_timesheetday_facts0cte

3. 5.887 1,807,276.503 ↓ 378.0 378 1

HashAggregate (cost=189,422.75..189,422.77 rows=1 width=65) (actual time=1,807,276.131..1,807,276.503 rows=378 loops=1)

  • Output: sum((CASE WHEN ((at.timeoffcodeid IS NULL) AND argo_9a85d5e29c974631b2c05074bc4fdc72.timeallocationisbillableordefault(isbillable."boolean", at.projectid)) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)), '1'::numeric))::double precision) ELSE '00:00:00'::interval END)), sum((CASE WHEN ((at.timeoffcodeid IS NULL) AND (NOT argo_9a85d5e29c974631b2c05074bc4fdc72.timeallocationisbillableordefault(isbillable."boolean", at.projectid)) 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 END)), sum((CASE WHEN (at.breaktypeid IS NULL) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)), '1'::numeric))::double precision) ELSE '00:00:00'::interval END)), ts.userid, ((date_part('month'::text, (at.entrydate)::timestamp without time zone))::integer), ((date_part('year'::text, (at.entrydate)::timestamp without time zone))::integer), ui_1.duplicatename, at.projectid, at.taskid
  • Group Key: ts.userid, (date_part('month'::text, (at.entrydate)::timestamp without time zone))::integer, (date_part('year'::text, (at.entrydate)::timestamp without time zone))::integer, ui_1.duplicatename, at.projectid, at.taskid
  • Buffers: shared hit=521900405 read=54029
4. 724.699 1,807,270.616 ↓ 1,928.0 1,928 1

Nested Loop (cost=11.04..189,422.72 rows=1 width=65) (actual time=32,506.393..1,807,270.616 rows=1,928 loops=1)

  • Output: ts.userid, (date_part('month'::text, (at.entrydate)::timestamp without time zone))::integer, (date_part('year'::text, (at.entrydate)::timestamp without time zone))::integer, ui_1.duplicatename, at.projectid, at.taskid, (CASE WHEN ((at.timeoffcodeid IS NULL) AND argo_9a85d5e29c974631b2c05074bc4fdc72.timeallocationisbillableordefault(isbillable."boolean", at.projectid)) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)), '1'::numeric))::double precision) ELSE '00:00:00'::interval END), (CASE WHEN ((at.timeoffcodeid IS NULL) AND (NOT argo_9a85d5e29c974631b2c05074bc4fdc72.timeallocationisbillableordefault(isbillable."boolean", at.projectid)) 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 END), (CASE WHEN (at.breaktypeid IS NULL) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)), '1'::numeric))::double precision) ELSE '00:00:00'::interval END)
  • Join Filter: (ts.userid = ui_1.id)
  • Rows Removed by Join Filter: 2969120
  • Buffers: shared hit=521900405 read=54029
5. 30,117.157 1,805,849.909 ↓ 1,928.0 1,928 1

Nested Loop (cost=11.04..189,352.08 rows=1 width=64) (actual time=32,505.456..1,805,849.909 rows=1,928 loops=1)

  • Output: ts.userid, at.entrydate, at.projectid, at.taskid, (CASE WHEN ((at.timeoffcodeid IS NULL) AND argo_9a85d5e29c974631b2c05074bc4fdc72.timeallocationisbillableordefault(isbillable."boolean", at.projectid)) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)), '1'::numeric))::double precision) ELSE '00:00:00'::interval END), (CASE WHEN ((at.timeoffcodeid IS NULL) AND (NOT argo_9a85d5e29c974631b2c05074bc4fdc72.timeallocationisbillableordefault(isbillable."boolean", at.projectid)) 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 END), (CASE WHEN (at.breaktypeid IS NULL) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)), '1'::numeric))::double precision) ELSE '00:00:00'::interval END)
  • Join Filter: (ts.id = at.timesheetid)
  • Rows Removed by Join Filter: 92763710
  • Buffers: shared hit=521831030 read=53996
6. 277.537 277.707 ↓ 1,939.0 1,939 1

Index Scan using uix2tsuseridstartdate on argo_9a85d5e29c974631b2c05074bc4fdc72.timesheet ts (cost=9.06..2,998.66 rows=1 width=20) (actual time=0.667..277.707 rows=1,939 loops=1)

  • Output: ts.id, ts.userid, ts.startdate, ts.enddate, ts.approvalstatus, ts.duedate, ts.autosubmitdatetimeutc, ts.lastautosubmitattemptdatetimeutc, ts.createdonutc
  • Index Cond: ((ts.startdate >= '2018-12-31'::date) AND (ts.startdate <= '2019-02-28'::date))
  • Filter: ((ts.enddate >= '2018-12-31'::date) AND (ts.enddate <= '2019-02-28'::date) AND ((hashed SubPlan 1) OR (NOT (hashed SubPlan 2))))
  • Rows Removed by Filter: 214
  • Buffers: shared hit=2177 read=970
7.          

SubPlan (forIndex Scan)

8. 0.099 0.099 ↑ 1.2 77 1

Seq Scan on argo_9a85d5e29c974631b2c05074bc4fdc72.userlocation userlocation3 (cost=0.00..4.21 rows=94 width=4) (actual time=0.026..0.099 rows=77 loops=1)

  • Output: userlocation3.userid
  • Filter: ((userlocation3.startdate <= '2019-03-07'::date) AND (userlocation3.enddate >= '2019-03-07'::date) AND (userlocation3.locationid = ANY ('{f0d8ac56-1371-4061-8e22-744561a7ee5f,ffddc00f-4b78-440f-a46d-f5471d7c5a7c}'::uuid[])))
  • Rows Removed by Filter: 50
  • Buffers: shared read=2
9. 0.071 0.071 ↓ 1.0 127 1

Seq Scan on argo_9a85d5e29c974631b2c05074bc4fdc72.userlocation userlocation4 (cost=0.00..3.89 rows=126 width=4) (actual time=0.013..0.071 rows=127 loops=1)

  • Output: userlocation4.userid
  • Filter: ((userlocation4.startdate <= '2019-03-07'::date) AND (userlocation4.enddate >= '2019-03-07'::date))
  • Buffers: shared hit=2
10. 538,755.028 1,775,455.045 ↓ 1.0 47,842 1,939

Nested Loop Left Join (cost=1.97..185,294.06 rows=47,083 width=97) (actual time=0.049..915.655 rows=47,842 loops=1,939)

  • Output: NULL::uuid, NULL::integer, at.entrydate, NULL::uuid, CASE WHEN (at.breaktypeid IS NULL) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)), '1'::numeric))::double precision) ELSE '00:00:00'::interval END, NULL::text, NULL::integer, NULL::date, at.projectid, at.taskid, NULL::integer, NULL::integer, NULL::uuid, NULL::interval, NULL::interval, NULL::interval, NULL::interval, NULL::interval, NULL::interval, CASE WHEN ((at.timeoffcodeid IS NULL) AND argo_9a85d5e29c974631b2c05074bc4fdc72.timeallocationisbillableordefault(isbillable."boolean", at.projectid)) THEN (at.duration * (COALESCE(((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)), '1'::numeric))::double precision) ELSE '00:00:00'::interval END, CASE WHEN ((at.timeoffcodeid IS NULL) AND (NOT argo_9a85d5e29c974631b2c05074bc4fdc72.timeallocationisbillableordefault(isbillable."boolean", at.projectid)) 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 END, NULL::character varying, NULL::character varying, NULL::character varying, NULL::character varying, NULL::character varying, NULL::character varying, NULL::character varying, NULL::character varying, NULL::character varying, NULL::character varying, NULL::timestamp without time zone, at.timesheetid, NULL::uuid
  • Join Filter: ((at.entrydate >= pc.effectivedate) AND (at.entrydate <= pc.enddate) AND (pj_1.id = at.projectid))
  • Buffers: shared hit=521828853 read=53026
11. 92,364.265 1,236,700.017 ↓ 1.0 47,842 1,939

Nested Loop Left Join (cost=1.42..159,746.93 rows=47,083 width=65) (actual time=0.025..637.803 rows=47,842 loops=1,939)

  • Output: at.entrydate, at.breaktypeid, at.duration, at.projectid, at.taskid, at.timeoffcodeid, at.timesheetid, isbillable."boolean
  • Join Filter: ((at.entrydate >= pc_1.effectivedate) AND (at.entrydate <= pc_1.enddate) AND (pj_2.id = at.projectid) AND (pc_1.clientid = at.userspecifiedclientid))
  • Buffers: shared hit=521828832 read=53024
12. 131,762.806 1,144,335.752 ↓ 1.0 47,842 1,939

Nested Loop Left Join (cost=0.86..158,683.95 rows=47,083 width=69) (actual time=0.023..590.168 rows=47,842 loops=1,939)

  • Output: at.entrydate, at.breaktypeid, at.duration, at.projectid, at.taskid, at.timeoffcodeid, at.timesheetid, at.userspecifiedclientid, isbillable."boolean
  • Buffers: shared hit=521828832 read=53018
13. 84,916.566 84,916.566 ↓ 1.0 47,842 1,939

Index Scan using ixata2projectid on argo_9a85d5e29c974631b2c05074bc4fdc72.dm_attendancetimeallocation_facts at (cost=0.43..18,738.36 rows=47,083 width=84) (actual time=0.015..43.794 rows=47,842 loops=1,939)

  • 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.timeentryinfo2, at.timeentryinfo3, at.timeentryinfo4, at.timeentryinfo5, at.timeoffinfo1, at.timeoffinfo2, at.timeoffinfo3, at.timeoffinfo4, at.timeoffinfo5, at.timesheetid, at.userspecifiedclientid
  • Index Cond: (at.projectid = 839)
  • Buffers: shared hit=70745953 read=10096
14. 927,656.380 927,656.380 ↑ 1.0 1 92,765,638

Index Scan using ixatamfactid on argo_9a85d5e29c974631b2c05074bc4fdc72.dm_attendancetimeallocation_metadata isbillable (cost=0.43..2.96 rows=1 width=17) (actual time=0.006..0.010 rows=1 loops=92,765,638)

  • Output: isbillable.id, isbillable.factid, isbillable.parentid, isbillable.index, isbillable.key, isbillable.uri, isbillable.slug, isbillable."boolean", isbillable.date, isbillable.number, isbillable.text, isbillable."time", isbillable.timespan, isbillable.daterange_startdate, isbillable.daterange_enddate, isbillable.daterange_relativedaterangeuri, isbillable.daterange_relativedaterangeasofdate, isbillable.workdayduration_decimalworkdays, isbillable.workdayduration_workdays, isbillable.workdayduration_hours, isbillable.workdayduration_minutes
  • Index Cond: (isbillable.factid = at.id)
  • Filter: (upper(isbillable.key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:IS-BILLABLE'::text)
  • Rows Removed by Filter: 3
  • Buffers: shared hit=451082879 read=42922
15. 0.000 0.000 ↓ 0.0 0 92,765,638

Materialize (cost=0.56..3.61 rows=1 width=16) (actual time=0.000..0.000 rows=0 loops=92,765,638)

  • Output: pj_2.id, pc_1.effectivedate, pc_1.enddate, pc_1.clientid
  • Buffers: shared read=6
16. 0.001 1.431 ↓ 0.0 0 1

Nested Loop (cost=0.56..3.60 rows=1 width=16) (actual time=1.431..1.431 rows=0 loops=1)

  • Output: pj_2.id, pc_1.effectivedate, pc_1.enddate, pc_1.clientid
  • Buffers: shared read=6
17. 1.381 1.381 ↑ 1.0 1 1

Index Only Scan using uix4pc_projectclienteffectiveend on argo_9a85d5e29c974631b2c05074bc4fdc72.projectclient pc_1 (cost=0.28..1.30 rows=1 width=16) (actual time=1.380..1.381 rows=1 loops=1)

  • Output: pc_1.projectid, pc_1.clientid, pc_1.effectivedate, pc_1.enddate
  • Index Cond: (pc_1.projectid = 839)
  • Heap Fetches: 0
  • Buffers: shared read=3
18. 0.049 0.049 ↓ 0.0 0 1

Index Scan using project_pkey on argo_9a85d5e29c974631b2c05074bc4fdc72.project pj_2 (cost=0.28..2.30 rows=1 width=4) (actual time=0.049..0.049 rows=0 loops=1)

  • Output: pj_2.id
  • Index Cond: (pj_2.id = 839)
  • Filter: (pj_2.clientbillingallocationmethod = 1)
  • Rows Removed by Filter: 1
  • Buffers: shared read=3
19. 0.000 0.000 ↑ 1.0 1 92,765,638

Materialize (cost=0.56..4.61 rows=1 width=44) (actual time=0.000..0.000 rows=1 loops=92,765,638)

  • Output: pj_1.id, pc.effectivedate, pc.enddate, ((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric))
  • Buffers: shared hit=5 read=1
20. 0.002 0.459 ↑ 1.0 1 1

Nested Loop (cost=0.56..4.60 rows=1 width=44) (actual time=0.457..0.459 rows=1 loops=1)

  • Output: pj_1.id, pc.effectivedate, pc.enddate, ((COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric))
  • Buffers: shared hit=5 read=1
21. 0.005 0.005 ↑ 1.0 1 1

Index Scan using project_pkey on argo_9a85d5e29c974631b2c05074bc4fdc72.project pj_1 (cost=0.28..2.30 rows=1 width=4) (actual time=0.005..0.005 rows=1 loops=1)

  • Output: pj_1.id
  • Index Cond: (pj_1.id = 839)
  • Filter: (pj_1.clientbillingallocationmethod = 0)
  • Buffers: shared hit=3
22. 0.452 0.452 ↑ 1.0 1 1

Index Scan using uix4pc_projectclienteffectiveend on argo_9a85d5e29c974631b2c05074bc4fdc72.projectclient pc (cost=0.28..2.29 rows=1 width=44) (actual time=0.451..0.452 rows=1 loops=1)

  • Output: pc.projectid, pc.effectivedate, pc.enddate, (COALESCE(pc.costallocationpercentage, '100'::numeric) / '100'::numeric)
  • Index Cond: (pc.projectid = 839)
  • Buffers: shared hit=2 read=1
23. 696.008 696.008 ↓ 1.0 1,541 1,928

Seq Scan on argo_9a85d5e29c974631b2c05074bc4fdc72.userinfo ui_1 (cost=0.00..51.39 rows=1,539 width=5) (actual time=0.002..0.361 rows=1,541 loops=1,928)

  • Output: ui_1.id, ui_1.firstname, ui_1.lastname, 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.info7, ui_1.info8, ui_1.info9, ui_1.info10, ui_1.info11, ui_1.info12, ui_1.info13, ui_1.info14, ui_1.info15, ui_1.info16, ui_1.info17, ui_1.info18, ui_1.info19, ui_1.info20, ui_1.info21, ui_1.info22, ui_1.info23, ui_1.info24, ui_1.info25, ui_1.info26, ui_1.info27, ui_1.info28, ui_1.info29, ui_1.info30, ui_1.info31, ui_1.info32, ui_1.info33, ui_1.info34, ui_1.info35, ui_1.info36, ui_1.info37, ui_1.info38, ui_1.info39, ui_1.info40, ui_1.info41, ui_1.info42, ui_1.info43, ui_1.info44, ui_1.info45, ui_1.info46, ui_1.info47, ui_1.info48, ui_1.info49, ui_1.info50, ui_1.languageid, ui_1.employeetypeid, ui_1.timezoneid, ui_1.duplicatename, ui_1.issampleuser, ui_1.slug, ui_1.defaultactivityid, ui_1.displayname
  • Buffers: shared hit=69375 read=33
24.          

Initplan (forSort)

25. 0.462 0.462 ↑ 1.0 1 1

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

  • Output: systeminformation.basecurrencyid
  • Buffers: shared read=1
26. 0.624 1,807,404.233 ↓ 378.0 378 1

Nested Loop Left Join (cost=1.56..7.83 rows=1 width=190) (actual time=1,807,280.959..1,807,404.233 rows=378 loops=1)

  • Output: dmv_timesheetday_facts5.entrydate4, dmv_timesheetday_facts5.entrydate5, ui.lastname, ui.firstname, dmv_timesheetday_facts5.userduplicatename6, login.loginname, ui.id, pj.name, pj.id, tdh.hierarchysorting, tdh.hierarchytaskname, dmv_timesheetday_facts5.billableduration0, dmv_timesheetday_facts5.nonbillableduration1, dmv_timesheetday_facts5.totalduration2, dmv_timesheetday_facts5.userid3
  • Buffers: shared hit=521906206 read=54272
27. 1.290 1,807,360.895 ↓ 378.0 378 1

Nested Loop Left Join (cost=1.27..7.46 rows=1 width=124) (actual time=1,807,279.943..1,807,360.895 rows=378 loops=1)

  • Output: dmv_timesheetday_facts5.entrydate4, dmv_timesheetday_facts5.entrydate5, dmv_timesheetday_facts5.userduplicatename6, dmv_timesheetday_facts5.billableduration0, dmv_timesheetday_facts5.nonbillableduration1, dmv_timesheetday_facts5.totalduration2, dmv_timesheetday_facts5.userid3, ui.lastname, ui.firstname, ui.id, login.loginname, pj.name, pj.id, tk.id
  • Buffers: shared hit=521905158 read=54175
28. 0.601 1,807,358.849 ↓ 378.0 378 1

Nested Loop Left Join (cost=1.12..7.28 rows=1 width=128) (actual time=1,807,278.978..1,807,358.849 rows=378 loops=1)

  • Output: dmv_timesheetday_facts5.entrydate4, dmv_timesheetday_facts5.entrydate5, dmv_timesheetday_facts5.userduplicatename6, dmv_timesheetday_facts5.billableduration0, dmv_timesheetday_facts5.nonbillableduration1, dmv_timesheetday_facts5.totalduration2, dmv_timesheetday_facts5.userid3, ui.lastname, ui.firstname, ui.id, login.loginname, pj.name, pj.id, tk.estimatedcostcurrencyid, tk.id
  • Buffers: shared hit=521904898 read=54172
29. 0.351 1,807,289.074 ↓ 378.0 378 1

Nested Loop Left Join (cost=0.83..4.96 rows=1 width=124) (actual time=1,807,277.882..1,807,289.074 rows=378 loops=1)

  • Output: dmv_timesheetday_facts5.entrydate4, dmv_timesheetday_facts5.entrydate5, dmv_timesheetday_facts5.userduplicatename6, dmv_timesheetday_facts5.billableduration0, dmv_timesheetday_facts5.nonbillableduration1, dmv_timesheetday_facts5.totalduration2, dmv_timesheetday_facts5.userid3, dmv_timesheetday_facts5.taskid8, ui.lastname, ui.firstname, ui.id, login.loginname, pj.name, pj.id
  • Buffers: shared hit=521903881 read=54055
30. 0.383 1,807,287.967 ↓ 378.0 378 1

Nested Loop (cost=0.56..2.65 rows=1 width=95) (actual time=1,807,277.851..1,807,287.967 rows=378 loops=1)

  • Output: dmv_timesheetday_facts5.entrydate4, dmv_timesheetday_facts5.entrydate5, dmv_timesheetday_facts5.userduplicatename6, dmv_timesheetday_facts5.billableduration0, dmv_timesheetday_facts5.nonbillableduration1, dmv_timesheetday_facts5.totalduration2, dmv_timesheetday_facts5.userid3, dmv_timesheetday_facts5.projectid7, dmv_timesheetday_facts5.taskid8, ui.lastname, ui.firstname, ui.id, login.loginname
  • Join Filter: (dmv_timesheetday_facts5.userid3 = login.userid)
  • Buffers: shared hit=521902750 read=54052
31. 0.526 1,807,279.268 ↓ 378.0 378 1

Nested Loop (cost=0.28..2.32 rows=1 width=86) (actual time=1,807,276.762..1,807,279.268 rows=378 loops=1)

  • Output: dmv_timesheetday_facts5.entrydate4, dmv_timesheetday_facts5.entrydate5, dmv_timesheetday_facts5.userduplicatename6, dmv_timesheetday_facts5.billableduration0, dmv_timesheetday_facts5.nonbillableduration1, dmv_timesheetday_facts5.totalduration2, dmv_timesheetday_facts5.userid3, dmv_timesheetday_facts5.projectid7, dmv_timesheetday_facts5.taskid8, ui.lastname, ui.firstname, ui.id
  • Buffers: shared hit=521901535 read=54033
32. 1,807,276.852 1,807,276.852 ↓ 378.0 378 1

CTE Scan on dmv_timesheetday_facts0cte dmv_timesheetday_facts5 (cost=0.00..0.02 rows=1 width=69) (actual time=1,807,276.136..1,807,276.852 rows=378 loops=1)

  • Output: dmv_timesheetday_facts5.billableduration0, dmv_timesheetday_facts5.nonbillableduration1, dmv_timesheetday_facts5.totalduration2, dmv_timesheetday_facts5.userid3, dmv_timesheetday_facts5.entrydate4, dmv_timesheetday_facts5.entrydate5, dmv_timesheetday_facts5.userduplicatename6, dmv_timesheetday_facts5.projectid7, dmv_timesheetday_facts5.taskid8
  • Buffers: shared hit=521900405 read=54029
33. 1.890 1.890 ↑ 1.0 1 378

Index Scan using userinfo_pkey on argo_9a85d5e29c974631b2c05074bc4fdc72.userinfo ui (cost=0.28..2.29 rows=1 width=17) (actual time=0.005..0.005 rows=1 loops=378)

  • Output: ui.id, ui.firstname, ui.lastname, 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.info9, ui.info10, ui.info11, ui.info12, ui.info13, ui.info14, ui.info15, ui.info16, ui.info17, ui.info18, ui.info19, ui.info20, ui.info21, ui.info22, ui.info23, ui.info24, ui.info25, ui.info26, ui.info27, ui.info28, ui.info29, ui.info30, ui.info31, ui.info32, ui.info33, ui.info34, ui.info35, ui.info36, ui.info37, ui.info38, ui.info39, ui.info40, ui.info41, ui.info42, ui.info43, ui.info44, ui.info45, ui.info46, ui.info47, ui.info48, ui.info49, ui.info50, ui.languageid, ui.employeetypeid, ui.timezoneid, ui.duplicatename, ui.issampleuser, ui.slug, ui.defaultactivityid, ui.displayname
  • Index Cond: (ui.id = dmv_timesheetday_facts5.userid3)
  • Buffers: shared hit=1130 read=4
34. 8.316 8.316 ↑ 1.0 1 378

Index Scan using login_pkey on argo_9a85d5e29c974631b2c05074bc4fdc72.login (cost=0.28..0.32 rows=1 width=13) (actual time=0.017..0.022 rows=1 loops=378)

  • Output: login.userid, login.loginname, login.password, login.authenticationtype, login.accountexpiry, login.passwordlastchanged, login.forcepasswordchange, login.disablepasswordchange, login.info1, login.info2, login.info3, login.info4, login.info5, login.passwordentropybits, login.ssoname, login.invalidloginattempts, login.lastinvalidloginattemptutc
  • Index Cond: (login.userid = ui.id)
  • Buffers: shared hit=1215 read=19
35. 0.756 0.756 ↑ 1.0 1 378

Index Scan using project_pkey on argo_9a85d5e29c974631b2c05074bc4fdc72.project pj (cost=0.28..2.29 rows=1 width=33) (actual time=0.001..0.002 rows=1 loops=378)

  • Output: pj.name, pj.id
  • Index Cond: (dmv_timesheetday_facts5.projectid7 = pj.id)
  • Buffers: shared hit=1131 read=3
36. 69.174 69.174 ↑ 1.0 1 378

Index Scan using task_pkey on argo_9a85d5e29c974631b2c05074bc4fdc72.task tk (cost=0.29..2.31 rows=1 width=8) (actual time=0.183..0.183 rows=1 loops=378)

  • Output: tk.id, tk.projectid, tk.parentid, tk.name, tk.description, tk.estimatedcost, tk.estimatedcostcurrencyid, tk.estimatedhours, tk.estimatedexpenses, tk.estimatedexpensescurrencyid, tk.expenseentrystartdate, tk.expenseentryenddate, tk.info1, tk.info2, tk.info3, tk.info4, tk.info5, tk.info6, tk.info7, tk.info8, tk.info9, tk.info10, tk.info11, tk.info12, tk.info13, tk.info14, tk.info15, tk.info16, tk.info17, tk.info18, tk.info19, tk.info20, tk.code, tk.isclosed, tk.percentcomplete, tk.istimeentryallowed, tk.timeentrystartdate, tk.timeentryenddate, tk.orderindex, tk.timeandexpenseentrytype, tk.costtype
  • Index Cond: (dmv_timesheetday_facts5.taskid8 = tk.id)
  • Buffers: shared hit=1017 read=117
37. 0.756 0.756 ↓ 0.0 0 378

Index Scan using uix3er_currencyideffectivedate on argo_9a85d5e29c974631b2c05074bc4fdc72.exchangerate (cost=0.14..0.18 rows=1 width=4) (actual time=0.002..0.002 rows=0 loops=378)

  • Output: exchangerate.variablecurrencyid, exchangerate.exchangevalue, exchangerate.effectivedate, exchangerate.enddate, exchangerate.id, exchangerate.fixedcurrencyid
  • Index Cond: ((exchangerate.variablecurrencyid = $4) AND (tk.estimatedcostcurrencyid = exchangerate.fixedcurrencyid) AND (('now'::cstring)::date >= exchangerate.effectivedate))
  • Filter: (('now'::cstring)::date <= exchangerate.enddate)
  • Buffers: shared hit=260 read=2
38. 42.714 42.714 ↑ 1.0 1 378

Index Scan using taskdenormalizedhierarchy_pkey on argo_9a85d5e29c974631b2c05074bc4fdc72.taskdenormalizedhierarchy tdh (cost=0.29..0.36 rows=1 width=74) (actual time=0.109..0.113 rows=1 loops=378)

  • Output: tdh.taskid, tdh.levelcount, tdh.closedcount, tdh.hierarchysorting, tdh.hierarchytaskname, tdh.level1, tdh.level2, tdh.level3, tdh.level4, tdh.level5, tdh.level6, tdh.level7, tdh.level8, tdh.level9, tdh.level10, tdh.fullpath, tdh.effectivelyenabled
  • Index Cond: (tk.id = tdh.taskid)
  • Buffers: shared hit=1048 read=97
Planning time : 69.435 ms
Execution time : 1,807,406.651 ms