explain.depesz.com

PostgreSQL's explain analyze made readable

Result: X8sK : civentg3

Settings
# exclusive inclusive rows x rows loops node
1. 107.305 38,465.912 ↓ 49.5 34,733 1

Sort (cost=669,952.42..669,954.17 rows=702 width=324) (actual time=38,461.590..38,465.912 rows=34,733 loops=1)

  • Output: ts.startdate, ts.enddate, ((ui.lastname)::character varying(50)), ((ui.firstname)::character varying(50)), ui.id, "*SELECT* 1".entrydate, "*SELECT* 1".modifiedonutc, "*SELECT* 1".action, "*SELECT* 1".validuntilutc, ts.id, "*SELECT* 1".modifiedbyuserid, (("*SELECT* 1".modifiedbyuseruri)::text)
  • Sort Key: ts.startdate, ts.enddate, ((ui.lastname)::character varying(50)) COLLATE "en_US", ((ui.firstname)::character varying(50)) COLLATE "en_US", "*SELECT* 1".entrydate, "*SELECT* 1".modifiedonutc, "*SELECT* 1".action, "*SELECT* 1".validuntilutc, ui.id, ts.id
  • Sort Method: quicksort Memory: 10762kB
  • Buffers: shared hit=41033501 read=25, temp read=46090 written=46086
2. 34.398 38,358.607 ↓ 49.5 34,733 1

Nested Loop (cost=2.09..669,919.23 rows=702 width=324) (actual time=151.590..38,358.607 rows=34,733 loops=1)

  • Output: ts.startdate, ts.enddate, ui.lastname, ui.firstname, ui.id, "*SELECT* 1".entrydate, "*SELECT* 1".modifiedonutc, "*SELECT* 1".action, "*SELECT* 1".validuntilutc, ts.id, "*SELECT* 1".modifiedbyuserid, "*SELECT* 1".modifiedbyuseruri
  • Inner Unique: true
  • Buffers: shared hit=41033482 read=25, temp read=46090 written=46086
3. 13.517 38,289.476 ↓ 49.5 34,733 1

Nested Loop (cost=1.81..669,652.47 rows=702 width=118) (actual time=151.574..38,289.476 rows=34,733 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".modifiedonutc, "*SELECT* 1".action, "*SELECT* 1".validuntilutc, "*SELECT* 1".modifiedbyuserid, "*SELECT* 1".modifiedbyuseruri, "*SELECT* 1".userid, ts.startdate, ts.enddate, ts.id
  • Inner Unique: true
  • Buffers: shared hit=40929122 read=25, temp read=46090 written=46086
4. 6.426 38,206.493 ↓ 49.4 34,733 1

Nested Loop (cost=1.39..669,335.39 rows=703 width=126) (actual time=151.563..38,206.493 rows=34,733 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".modifiedonutc, "*SELECT* 1".action, "*SELECT* 1".validuntilutc, "*SELECT* 1".modifiedbyuserid, "*SELECT* 1".modifiedbyuseruri, "*SELECT* 1".timesheetid, "*SELECT* 1".userid, tslist.timesheetid
  • Inner Unique: true
  • Buffers: shared hit=40790190 read=25, temp read=46090 written=46086
5. 4.184 38,061.135 ↓ 49.4 34,733 1

Append (cost=0.97..668,377.59 rows=703 width=110) (actual time=151.514..38,061.135 rows=34,733 loops=1)

  • Buffers: shared hit=40656323 read=9, temp read=46090 written=46086
6. 0.000 0.002 ↓ 0.0 0 1

Subquery Scan on *SELECT* 1 (cost=0.97..22.49 rows=1 width=80) (actual time=0.002..0.002 rows=0 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".modifiedonutc, "*SELECT* 1".action, "*SELECT* 1".validuntilutc, "*SELECT* 1".modifiedbyuserid, "*SELECT* 1".modifiedbyuseruri, "*SELECT* 1".timesheetid, "*SELECT* 1".userid
7. 0.000 0.002 ↓ 0.0 0 1

Nested Loop (cost=0.97..22.48 rows=1 width=348) (actual time=0.002..0.002 rows=0 loops=1)

  • Output: ts_1.id, ts_1.userid, NULL::date, NULL::date, NULL::text, CASE WHEN (at.parentid IS NULL) THEN 100 ELSE 101 END, NULL::uuid, at.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, at.openinguserid, NULL::text, NULL::integer, NULL::text, NULL::text, at.fromtimestamputc, at.totimestamputc, NULL::text
8. 0.001 0.002 ↓ 0.0 0 1

Nested Loop (cost=0.54..19.22 rows=1 width=60) (actual time=0.001..0.002 rows=0 loops=1)

  • Output: ts_1.id, ts_1.userid, at.parentid, at.entrydate, at.openinguserid, at.fromtimestamputc, at.totimestamputc
9. 0.000 0.001 ↓ 0.0 0 1

Nested Loop (cost=0.12..12.65 rows=1 width=44) (actual time=0.001..0.001 rows=0 loops=1)

  • Output: at.parentid, at.entrydate, at.openinguserid, at.fromtimestamputc, at.totimestamputc, at.userid
  • Join Filter: (at.rootid = allocatedtime.rootid)
10. 0.001 0.001 ↓ 0.0 0 1

Seq Scan on "2f766932716d4761981a2698126f0f51".allocatedtime at (cost=0.00..10.50 rows=1 width=60) (actual time=0.001..0.001 rows=0 loops=1)

  • Output: at.id, at.rootid, at.parentid, at.inouttimesheetentryid, at.userid, at.openinguserid, at.openingactualuserid, at.closinguserid, at.closingactualuserid, at.entrydate, at.duration, at.workdayduration, at.comments, at.openingreason, at.closingreason, at.projectid, at.taskid, at.activityid, at.billingrateid, at.breaktypeid, at.info1, at.info2, at.info3, at.info4, at.info5, at.fromtimestamputc, at.totimestamputc
  • Filter: ((at.fromtimestamputc >= '2020-03-18 04:00:00'::timestamp without time zone) AND (at.fromtimestamputc < '2020-03-19 04:00:00'::timestamp without time zone) AND (CASE WHEN (at.parentid IS NULL) THEN 100 ELSE 101 END = ANY ('{1,2,3,4,6,100,101,102}'::integer[])))
11. 0.000 0.000 ↓ 0.0 0

Index Only Scan using ixallocatedtimerootid on "2f766932716d4761981a2698126f0f51".allocatedtime (cost=0.12..2.14 rows=1 width=16) (never executed)

  • Output: allocatedtime.rootid
  • Heap Fetches: 0
12. 0.000 0.000 ↓ 0.0 0

Index Scan using ixtsuseridstartdateenddate on "2f766932716d4761981a2698126f0f51".timesheet ts_1 (cost=0.42..6.52 rows=5 width=28) (never executed)

  • 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 = at.userid) AND (at.entrydate >= ts_1.startdate) AND (at.entrydate <= ts_1.enddate))
13. 0.000 0.000 ↓ 0.0 0

Index Scan using ixtpsstimesheetid on "2f766932716d4761981a2698126f0f51".timesheetpolicysettingssnapshot tsformat (cost=0.43..3.25 rows=1 width=16) (never executed)

  • Output: tsformat.id, tsformat.timesheetid, tsformat.parentid, tsformat.index, tsformat.key, tsformat.uri, tsformat.slug, tsformat."boolean", tsformat.date, tsformat.number, tsformat.text, tsformat."time", tsformat.timespan, tsformat.daterange_startdate, tsformat.daterange_enddate, tsformat.daterange_relativedaterangeuri, tsformat.daterange_relativedaterangeasofdate, tsformat.workdayduration_decimalworkdays, tsformat.workdayduration_workdays, tsformat.workdayduration_hours, tsformat.workdayduration_minutes
  • Index Cond: (tsformat.timesheetid = ts_1.id)
  • Filter: ((upper(tsformat.uri) <> 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text) AND (upper(tsformat.key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text))
14. 0.000 0.002 ↓ 0.0 0 1

Subquery Scan on *SELECT* 2 (cost=0.56..19.06 rows=1 width=80) (actual time=0.002..0.002 rows=0 loops=1)

  • Output: "*SELECT* 2".entrydate, "*SELECT* 2".modifiedonutc, "*SELECT* 2".action, "*SELECT* 2".validuntilutc, "*SELECT* 2".modifiedbyuserid, "*SELECT* 2".modifiedbyuseruri, "*SELECT* 2".timesheetid, "*SELECT* 2".userid
15. 0.001 0.002 ↓ 0.0 0 1

Result (cost=0.56..19.05 rows=1 width=348) (actual time=0.002..0.002 rows=0 loops=1)

  • Output: ts_2.id, ts_2.userid, NULL::date, NULL::date, NULL::text, 102, NULL::uuid, at_1.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, at_1.closinguserid, NULL::text, NULL::integer, NULL::text, NULL::text, at_1.totimestamputc, NULL::timestamp without time zone, NULL::text
  • One-Time Filter: (102 = ANY ('{1,2,3,4,6,100,101,102}'::integer[]))
16. 0.001 0.001 ↓ 0.0 0 1

Nested Loop (cost=0.56..19.05 rows=1 width=348) (actual time=0.001..0.001 rows=0 loops=1)

  • Output: ts_2.id, ts_2.userid, NULL::date, NULL::date, NULL::text, 102, NULL::uuid, at_1.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, at_1.closinguserid, NULL::text, NULL::integer, NULL::text, NULL::text, at_1.totimestamputc, NULL::timestamp without time zone, NULL::text
17. 0.000 0.000 ↓ 0.0 0 1

Nested Loop Left Join (cost=0.14..12.46 rows=1 width=20) (actual time=0.000..0.000 rows=0 loops=1)

  • Output: at_1.entrydate, at_1.closinguserid, at_1.totimestamputc, at_1.userid
  • Inner Unique: true
  • Filter: (child_at.id IS NULL)
18. 0.000 0.000 ↓ 0.0 0 1

Seq Scan on "2f766932716d4761981a2698126f0f51".allocatedtime at_1 (cost=0.00..10.30 rows=1 width=36) (actual time=0.000..0.000 rows=0 loops=1)

  • Output: at_1.id, at_1.rootid, at_1.parentid, at_1.inouttimesheetentryid, at_1.userid, at_1.openinguserid, at_1.openingactualuserid, at_1.closinguserid, at_1.closingactualuserid, at_1.entrydate, at_1.duration, at_1.workdayduration, at_1.comments, at_1.openingreason, at_1.closingreason, at_1.projectid, at_1.taskid, at_1.activityid, at_1.billingrateid, at_1.breaktypeid, at_1.info1, at_1.info2, at_1.info3, at_1.info4, at_1.info5, at_1.fromtimestamputc, at_1.totimestamputc
  • Filter: ((at_1.totimestamputc IS NOT NULL) AND (at_1.totimestamputc >= '2020-03-18 04:00:00'::timestamp without time zone) AND (at_1.totimestamputc < '2020-03-19 04:00:00'::timestamp without time zone))
19. 0.000 0.000 ↓ 0.0 0

Index Scan using uixallocatedtime_parent on "2f766932716d4761981a2698126f0f51".allocatedtime child_at (cost=0.14..2.16 rows=1 width=32) (never executed)

  • Output: child_at.id, child_at.rootid, child_at.parentid, child_at.inouttimesheetentryid, child_at.userid, child_at.openinguserid, child_at.openingactualuserid, child_at.closinguserid, child_at.closingactualuserid, child_at.entrydate, child_at.duration, child_at.workdayduration, child_at.comments, child_at.openingreason, child_at.closingreason, child_at.projectid, child_at.taskid, child_at.activityid, child_at.billingrateid, child_at.breaktypeid, child_at.info1, child_at.info2, child_at.info3, child_at.info4, child_at.info5, child_at.fromtimestamputc, child_at.totimestamputc
  • Index Cond: (child_at.parentid = at_1.id)
20. 0.000 0.000 ↓ 0.0 0

Index Scan using ixtsuseridstartdateenddate on "2f766932716d4761981a2698126f0f51".timesheet ts_2 (cost=0.42..6.52 rows=5 width=28) (never executed)

  • 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.userid = at_1.userid) AND (at_1.entrydate >= ts_2.startdate) AND (at_1.entrydate <= ts_2.enddate))
21. 1.833 407.162 ↓ 264.8 11,651 1

Subquery Scan on *SELECT* 3 (cost=2,149.34..8,868.53 rows=44 width=110) (actual time=151.509..407.162 rows=11,651 loops=1)

  • Output: "*SELECT* 3".entrydate, "*SELECT* 3".modifiedonutc, "*SELECT* 3".action, "*SELECT* 3".validuntilutc, "*SELECT* 3".modifiedbyuserid, "*SELECT* 3".modifiedbyuseruri, "*SELECT* 3".timesheetid, "*SELECT* 3".userid
  • Buffers: shared hit=219544 read=2
22. 3.191 405.329 ↓ 264.8 11,651 1

Nested Loop Left Join (cost=2,149.34..8,868.09 rows=44 width=378) (actual time=151.508..405.329 rows=11,651 loops=1)

  • Output: ts_3.id, ts_3.userid, NULL::date, NULL::date, NULL::text, CASE WHEN (rev.previousrevisionid IS NULL) THEN 100 ELSE 101 END, NULL::uuid, rev.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser.uri, NULL::integer, NULL::text, NULL::text, rev.fromtimestamputc, rev.totimestamputc, NULL::text
  • Buffers: shared hit=219544 read=2
23. 6.129 355.534 ↓ 264.8 11,651 1

Nested Loop Left Join (cost=2,148.78..8,754.13 rows=44 width=134) (actual time=151.492..355.534 rows=11,651 loops=1)

  • Output: ts_3.id, ts_3.userid, rev.previousrevisionid, rev.entrydate, rev.fromtimestamputc, rev.totimestamputc, rev.openingauditid, effectiveuser.uri
  • Buffers: shared hit=172930 read=2
24. 9.158 314.452 ↓ 264.8 11,651 1

Nested Loop Left Join (cost=2,148.22..8,640.17 rows=44 width=134) (actual time=151.476..314.452 rows=11,651 loops=1)

  • Output: ts_3.id, ts_3.userid, rev.previousrevisionid, rev.entrydate, rev.fromtimestamputc, rev.totimestamputc, rev.openingauditid, effectiveuser.uri
  • Buffers: shared hit=114664 read=2
25. 3.633 235.388 ↓ 264.8 11,651 1

Hash Semi Join (cost=2,147.66..8,526.21 rows=44 width=72) (actual time=151.442..235.388 rows=11,651 loops=1)

  • Output: ts_3.id, ts_3.userid, rev.previousrevisionid, rev.entrydate, rev.fromtimestamputc, rev.totimestamputc, rev.openingauditid
  • Hash Cond: (ts_3.id = timesheetpolicysettingssnapshot.timesheetid)
  • Buffers: shared hit=56167
26. 11.103 80.392 ↓ 5.3 11,651 1

Nested Loop (cost=0.85..6,360.45 rows=2,193 width=72) (actual time=0.053..80.392 rows=11,651 loops=1)

  • Output: ts_3.id, ts_3.userid, rev.previousrevisionid, rev.entrydate, rev.fromtimestamputc, rev.totimestamputc, rev.openingauditid
  • Buffers: shared hit=54261
27. 34.336 34.336 ↓ 29.0 11,651 1

Index Scan using ixter2fromtimestamputc on "2f766932716d4761981a2698126f0f51".timeentryrevision rev (cost=0.43..4,729.21 rows=402 width=56) (actual time=0.028..34.336 rows=11,651 loops=1)

  • Output: rev.id, rev.txid, rev.previousrevisionid, rev.timeentryid, rev.fromtimestamputc, rev.totimestamputc, rev.openingauditid, rev.closingauditid, rev.userid, rev.entrydate, rev.timeallocationtype, rev.hours, rev.intime, rev.outtime
  • Index Cond: ((rev.fromtimestamputc >= '2020-03-18 04:00:00'::timestamp without time zone) AND (rev.fromtimestamputc < '2020-03-19 04:00:00'::timestamp without time zone))
  • Filter: (CASE WHEN (rev.previousrevisionid IS NULL) THEN 100 ELSE 101 END = ANY ('{1,2,3,4,6,100,101,102}'::integer[]))
  • Buffers: shared hit=5013
28. 34.953 34.953 ↑ 5.0 1 11,651

Index Scan using ixtsuseridstartdateenddate on "2f766932716d4761981a2698126f0f51".timesheet ts_3 (cost=0.42..4.01 rows=5 width=28) (actual time=0.003..0.003 rows=1 loops=11,651)

  • 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
  • Index Cond: ((ts_3.userid = rev.userid) AND (rev.entrydate >= ts_3.startdate) AND (rev.entrydate <= ts_3.enddate))
  • Buffers: shared hit=49248
29. 22.531 151.363 ↓ 50.2 103,274 1

Hash (cost=2,121.11..2,121.11 rows=2,056 width=16) (actual time=151.363..151.363 rows=103,274 loops=1)

  • Output: timesheetpolicysettingssnapshot.timesheetid
  • Buckets: 131072 (originally 4096) Batches: 1 (originally 1) Memory Usage: 5865kB
  • Buffers: shared hit=1906
30. 128.832 128.832 ↓ 50.2 103,274 1

Index Scan using ixtspss2key on "2f766932716d4761981a2698126f0f51".timesheetpolicysettingssnapshot (cost=0.68..2,121.11 rows=2,056 width=16) (actual time=0.046..128.832 rows=103,274 loops=1)

  • Output: timesheetpolicysettingssnapshot.timesheetid
  • Index Cond: ((upper(timesheetpolicysettingssnapshot.key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text) AND (upper(timesheetpolicysettingssnapshot.uri) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text))
  • Buffers: shared hit=1906
31. 69.906 69.906 ↑ 1.0 1 11,651

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue effectiveuser (cost=0.56..2.58 rows=1 width=78) (actual time=0.006..0.006 rows=1 loops=11,651)

  • Output: effectiveuser.id, effectiveuser.revisionauditid, effectiveuser.keyuri, effectiveuser.parentid, effectiveuser.index, effectiveuser.uri, effectiveuser.slug, effectiveuser."boolean", effectiveuser.date, effectiveuser.number, effectiveuser.text, effectiveuser."time", effectiveuser.timespan, effectiveuser.daterange_startdate, effectiveuser.daterange_enddate, effectiveuser.daterange_relativedaterangeuri, effectiveuser.daterange_relativedaterangeasofdate, effectiveuser.workdayduration_decimalworkdays, effectiveuser.workdayduration_workdays, effectiveuser.workdayduration_hours, effectiveuser.workdayduration_minutes
  • Index Cond: ((effectiveuser.revisionauditid = rev.openingauditid) AND (upper(effectiveuser.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
  • Buffers: shared hit=58497 read=2
32. 34.953 34.953 ↑ 1.0 1 11,651

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue actualuser (cost=0.56..2.58 rows=1 width=16) (actual time=0.003..0.003 rows=1 loops=11,651)

  • Output: actualuser.id, actualuser.revisionauditid, actualuser.keyuri, actualuser.parentid, actualuser.index, actualuser.uri, actualuser.slug, actualuser."boolean", actualuser.date, actualuser.number, actualuser.text, actualuser."time", actualuser.timespan, actualuser.daterange_startdate, actualuser.daterange_enddate, actualuser.daterange_relativedaterangeuri, actualuser.daterange_relativedaterangeasofdate, actualuser.workdayduration_decimalworkdays, actualuser.workdayduration_workdays, actualuser.workdayduration_hours, actualuser.workdayduration_minutes
  • Index Cond: ((actualuser.revisionauditid = rev.openingauditid) AND (upper(actualuser.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
  • Buffers: shared hit=58266
33. 46.604 46.604 ↓ 0.0 0 11,651

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue changereason (cost=0.56..2.58 rows=1 width=16) (actual time=0.004..0.004 rows=0 loops=11,651)

  • Output: changereason.id, changereason.revisionauditid, changereason.keyuri, changereason.parentid, changereason.index, changereason.uri, changereason.slug, changereason."boolean", changereason.date, changereason.number, changereason.text, changereason."time", changereason.timespan, changereason.daterange_startdate, changereason.daterange_enddate, changereason.daterange_relativedaterangeuri, changereason.daterange_relativedaterangeasofdate, changereason.workdayduration_decimalworkdays, changereason.workdayduration_workdays, changereason.workdayduration_hours, changereason.workdayduration_minutes
  • Index Cond: ((changereason.revisionauditid = rev.openingauditid) AND (upper(changereason.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:COMMENT'::text))
  • Buffers: shared hit=46614
34. 3.027 10,139.897 ↓ 1,288.1 21,898 1

Subquery Scan on *SELECT* 4 (cost=32,592.23..51,452.45 rows=17 width=110) (actual time=9,535.093..10,139.897 rows=21,898 loops=1)

  • Output: "*SELECT* 4".entrydate, "*SELECT* 4".modifiedonutc, "*SELECT* 4".action, "*SELECT* 4".validuntilutc, "*SELECT* 4".modifiedbyuserid, "*SELECT* 4".modifiedbyuseruri, "*SELECT* 4".timesheetid, "*SELECT* 4".userid
  • Buffers: shared hit=4373785 read=7, temp read=46090 written=46086
35. 3.986 10,136.870 ↓ 1,288.1 21,898 1

Gather (cost=32,592.23..51,452.28 rows=17 width=378) (actual time=9,535.092..10,136.870 rows=21,898 loops=1)

  • Output: ts_4.id, ts_4.userid, NULL::date, NULL::date, NULL::text, 101, NULL::uuid, rev_1.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_1.uri, NULL::integer, NULL::text, NULL::text, mdrev.fromtimestamputc, mdrev.totimestamputc, NULL::text
  • Workers Planned: 1
  • Workers Launched: 1
  • Buffers: shared hit=4373785 read=7, temp read=46090 written=46086
36. 2.976 10,132.884 ↓ 1,094.9 10,949 2 / 2

Result (cost=31,592.23..50,450.58 rows=10 width=378) (actual time=9,465.624..10,132.884 rows=10,949 loops=2)

  • Output: ts_4.id, ts_4.userid, NULL::date, NULL::date, NULL::text, 101, NULL::uuid, rev_1.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_1.uri, NULL::integer, NULL::text, NULL::text, mdrev.fromtimestamputc, mdrev.totimestamputc, NULL::text
  • One-Time Filter: (101 = ANY ('{1,2,3,4,6,100,101,102}'::integer[]))
  • Buffers: shared hit=4373785 read=7, temp read=46090 written=46086
  • Worker 0: actual time=9397.645..10160.714 rows=16487 loops=1
  • Buffers: shared hit=2290197 read=3, temp read=23173 written=23171
37. 6.798 10,129.908 ↓ 1,094.9 10,949 2 / 2

Nested Loop Left Join (cost=31,592.23..50,450.58 rows=10 width=102) (actual time=9,465.622..10,129.908 rows=10,949 loops=2)

  • Output: mdrev.fromtimestamputc, mdrev.totimestamputc, rev_1.entrydate, ts_4.id, ts_4.userid, effectiveuser_1.uri
  • Buffers: shared hit=4373785 read=7, temp read=46090 written=46086
  • Worker 0: actual time=9397.643..10156.210 rows=16487 loops=1
  • Buffers: shared hit=2290197 read=3, temp read=23173 written=23171
38. 10.712 10,090.263 ↓ 1,094.9 10,949 2 / 2

Nested Loop Left Join (cost=31,591.66..50,426.13 rows=10 width=118) (actual time=9,465.606..10,090.263 rows=10,949 loops=2)

  • Output: mdrev.fromtimestamputc, mdrev.totimestamputc, mdrev.openingauditid, rev_1.entrydate, ts_4.id, ts_4.userid, effectiveuser_1.uri
  • Buffers: shared hit=4264278 read=7, temp read=46090 written=46086
  • Worker 0: actual time=9397.625..10097.145 rows=16487 loops=1
  • Buffers: shared hit=2207749 read=3, temp read=23173 written=23171
39. 11.310 10,035.755 ↓ 1,216.6 10,949 2 / 2

Nested Loop Anti Join (cost=31,591.10..50,404.14 rows=9 width=56) (actual time=9,465.579..10,035.755 rows=10,949 loops=2)

  • Output: mdrev.fromtimestamputc, mdrev.totimestamputc, mdrev.openingauditid, rev_1.entrydate, ts_4.id, ts_4.userid
  • Buffers: shared hit=4154321 read=7, temp read=46090 written=46086
  • Worker 0: actual time=9397.596..10016.620 rows=16487 loops=1
  • Buffers: shared hit=2124982 read=3, temp read=23173 written=23171
40. 488.136 9,961.764 ↓ 15.6 20,894 2 / 2

Hash Join (cost=31,590.67..48,048.04 rows=1,338 width=72) (actual time=9,465.532..9,961.764 rows=20,894 loops=2)

  • Output: mdrev.fromtimestamputc, mdrev.totimestamputc, mdrev.timeentryid, mdrev.openingauditid, rev_1.entrydate, ts_4.id, ts_4.userid
  • Hash Cond: (mdrev.timeentryid = rev_1.timeentryid)
  • Join Filter: ((rev_1.fromtimestamputc <= mdrev.fromtimestamputc) AND ((rev_1.totimestamputc IS NULL) OR (rev_1.totimestamputc > mdrev.fromtimestamputc)))
  • Rows Removed by Join Filter: 46599
  • Buffers: shared hit=3961920 read=7, temp read=46090 written=46086
  • Worker 0: actual time=9397.551..9908.207 rows=31134 loops=1
  • Buffers: shared hit=1981823 read=3, temp read=23173 written=23171
41. 11.599 11.599 ↓ 1.0 20,894 2 / 2

Parallel Index Scan using ixtemr2fromtimestamputc on "2f766932716d4761981a2698126f0f51".timeentrymetadatarevision mdrev (cost=0.56..15,647.82 rows=19,904 width=48) (actual time=0.039..11.599 rows=20,894 loops=2)

  • Output: mdrev.id, mdrev.txid, mdrev.previousrevisionid, mdrev.timeentrymetadataid, mdrev.fromtimestamputc, mdrev.totimestamputc, mdrev.openingauditid, mdrev.closingauditid, mdrev.timeentryid, mdrev.parentid, mdrev.index, mdrev.key, mdrev.uri, mdrev.slug, mdrev."boolean", mdrev.date, mdrev.number, mdrev.text, mdrev."time", mdrev.timespan, mdrev.daterange_startdate, mdrev.daterange_enddate, mdrev.daterange_relativedaterangeuri, mdrev.daterange_relativedaterangeasofdate, mdrev.workdayduration_decimalworkdays, mdrev.workdayduration_workdays, mdrev.workdayduration_hours, mdrev.workdayduration_minutes
  • Index Cond: ((mdrev.fromtimestamputc >= '2020-03-18 04:00:00'::timestamp without time zone) AND (mdrev.fromtimestamputc < '2020-03-19 04:00:00'::timestamp without time zone))
  • Buffers: shared hit=3422
  • Worker 0: actual time=0.052..16.976 rows=31134 loops=1
  • Buffers: shared hit=2572
42. 1,582.149 9,462.029 ↓ 9.2 4,917,346 2 / 2

Hash (cost=24,921.66..24,921.66 rows=533,476 width=56) (actual time=9,462.029..9,462.029 rows=4,917,346 loops=2)

  • Output: rev_1.entrydate, rev_1.timeentryid, rev_1.fromtimestamputc, rev_1.totimestamputc, ts_4.id, ts_4.userid
  • Buckets: 4194304 (originally 1048576) Batches: 2 (originally 1) Memory Usage: 249203kB
  • Buffers: shared hit=3958498 read=7, temp written=45558
  • Worker 0: actual time=9393.968..9393.968 rows=4917346 loops=1
  • Buffers: shared hit=1979251 read=3, temp written=22779
43. 1,210.248 7,879.880 ↓ 9.2 4,917,346 2 / 2

Nested Loop (cost=2,127.10..24,921.66 rows=533,476 width=56) (actual time=186.616..7,879.880 rows=4,917,346 loops=2)

  • Output: rev_1.entrydate, rev_1.timeentryid, rev_1.fromtimestamputc, rev_1.totimestamputc, ts_4.id, ts_4.userid
  • Buffers: shared hit=3958498 read=7
  • Worker 0: actual time=184.629..7839.112 rows=4917346 loops=1
  • Buffers: shared hit=1979251 read=3
44. 45.075 679.740 ↓ 50.2 103,274 2 / 2

Nested Loop (cost=2,126.66..4,565.33 rows=2,056 width=28) (actual time=186.590..679.740 rows=103,274 loops=2)

  • Output: ts_4.id, ts_4.userid, ts_4.startdate, ts_4.enddate
  • Inner Unique: true
  • Buffers: shared hit=830918
  • Worker 0: actual time=184.602..678.229 rows=103274 loops=1
  • Buffers: shared hit=415460
45. 76.314 221.569 ↓ 50.7 103,274 2 / 2

HashAggregate (cost=2,126.25..2,146.61 rows=2,036 width=16) (actual time=186.567..221.569 rows=103,274 loops=2)

  • Output: timesheetpolicysettingssnapshot_1.timesheetid
  • Group Key: timesheetpolicysettingssnapshot_1.timesheetid
  • Buffers: shared hit=3813
  • Worker 0: actual time=184.577..219.319 rows=103274 loops=1
  • Buffers: shared hit=1907
46. 145.255 145.255 ↓ 50.2 103,274 2 / 2

Index Scan using ixtspss2key on "2f766932716d4761981a2698126f0f51".timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_1 (cost=0.68..2,121.11 rows=2,056 width=16) (actual time=0.065..145.255 rows=103,274 loops=2)

  • Output: timesheetpolicysettingssnapshot_1.id, timesheetpolicysettingssnapshot_1.timesheetid, timesheetpolicysettingssnapshot_1.parentid, timesheetpolicysettingssnapshot_1.index, timesheetpolicysettingssnapshot_1.key, timesheetpolicysettingssnapshot_1.uri, timesheetpolicysettingssnapshot_1.slug, timesheetpolicysettingssnapshot_1."boolean", timesheetpolicysettingssnapshot_1.date, timesheetpolicysettingssnapshot_1.number, timesheetpolicysettingssnapshot_1.text, timesheetpolicysettingssnapshot_1."time", timesheetpolicysettingssnapshot_1.timespan, timesheetpolicysettingssnapshot_1.daterange_startdate, timesheetpolicysettingssnapshot_1.daterange_enddate, timesheetpolicysettingssnapshot_1.daterange_relativedaterangeuri, timesheetpolicysettingssnapshot_1.daterange_relativedaterangeasofdate, timesheetpolicysettingssnapshot_1.workdayduration_decimalworkdays, timesheetpolicysettingssnapshot_1.workdayduration_workdays, timesheetpolicysettingssnapshot_1.workdayduration_hours, timesheetpolicysettingssnapshot_1.workdayduration_minutes
  • Index Cond: ((upper(timesheetpolicysettingssnapshot_1.key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text) AND (upper(timesheetpolicysettingssnapshot_1.uri) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text))
  • Buffers: shared hit=3813
  • Worker 0: actual time=0.060..143.630 rows=103274 loops=1
  • Buffers: shared hit=1907
47. 413.096 413.096 ↑ 1.0 1 206,548 / 2

Index Scan using timesheet_pkey on "2f766932716d4761981a2698126f0f51".timesheet ts_4 (cost=0.42..1.20 rows=1 width=28) (actual time=0.004..0.004 rows=1 loops=206,548)

  • Output: ts_4.id, ts_4.userid, ts_4.startdate, ts_4.enddate, ts_4.approvalstatus, ts_4.duedate, ts_4.autosubmitdatetimeutc, ts_4.lastautosubmitattemptdatetimeutc, ts_4.createdonutc
  • Index Cond: (ts_4.id = timesheetpolicysettingssnapshot_1.timesheetid)
  • Buffers: shared hit=827105
  • Worker 0: actual time=0.004..0.004 rows=1 loops=103274
  • Buffers: shared hit=413553
48. 5,989.892 5,989.892 ↑ 5.2 48 206,548 / 2

Index Scan using ixter2userid on "2f766932716d4761981a2698126f0f51".timeentryrevision rev_1 (cost=0.43..7.38 rows=252 width=40) (actual time=0.007..0.058 rows=48 loops=206,548)

  • Output: rev_1.id, rev_1.txid, rev_1.previousrevisionid, rev_1.timeentryid, rev_1.fromtimestamputc, rev_1.totimestamputc, rev_1.openingauditid, rev_1.closingauditid, rev_1.userid, rev_1.entrydate, rev_1.timeallocationtype, rev_1.hours, rev_1.intime, rev_1.outtime
  • Index Cond: ((rev_1.userid = ts_4.userid) AND (rev_1.entrydate >= ts_4.startdate) AND (rev_1.entrydate <= ts_4.enddate))
  • Buffers: shared hit=3127580 read=7
  • Worker 0: actual time=0.007..0.057 rows=48 loops=103274
  • Buffers: shared hit=1563791 read=3
49. 62.681 62.681 ↓ 0.0 0 41,787 / 2

Index Scan using timeentryrevision_singleinitialrevision on "2f766932716d4761981a2698126f0f51".timeentryrevision (cost=0.43..1.75 rows=1 width=24) (actual time=0.003..0.003 rows=0 loops=41,787)

  • Output: timeentryrevision.id, timeentryrevision.txid, timeentryrevision.previousrevisionid, timeentryrevision.timeentryid, timeentryrevision.fromtimestamputc, timeentryrevision.totimestamputc, timeentryrevision.openingauditid, timeentryrevision.closingauditid, timeentryrevision.userid, timeentryrevision.entrydate, timeentryrevision.timeallocationtype, timeentryrevision.hours, timeentryrevision.intime, timeentryrevision.outtime
  • Index Cond: (timeentryrevision.timeentryid = mdrev.timeentryid)
  • Filter: (timeentryrevision.fromtimestamputc = mdrev.fromtimestamputc)
  • Rows Removed by Filter: 1
  • Buffers: shared hit=192401
  • Worker 0: actual time=0.003..0.003 rows=0 loops=31134
  • Buffers: shared hit=143159
50. 43.796 43.796 ↑ 1.0 1 21,898 / 2

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue effectiveuser_1 (cost=0.56..2.43 rows=1 width=78) (actual time=0.004..0.004 rows=1 loops=21,898)

  • Output: effectiveuser_1.id, effectiveuser_1.revisionauditid, effectiveuser_1.keyuri, effectiveuser_1.parentid, effectiveuser_1.index, effectiveuser_1.uri, effectiveuser_1.slug, effectiveuser_1."boolean", effectiveuser_1.date, effectiveuser_1.number, effectiveuser_1.text, effectiveuser_1."time", effectiveuser_1.timespan, effectiveuser_1.daterange_startdate, effectiveuser_1.daterange_enddate, effectiveuser_1.daterange_relativedaterangeuri, effectiveuser_1.daterange_relativedaterangeasofdate, effectiveuser_1.workdayduration_decimalworkdays, effectiveuser_1.workdayduration_workdays, effectiveuser_1.workdayduration_hours, effectiveuser_1.workdayduration_minutes
  • Index Cond: ((effectiveuser_1.revisionauditid = mdrev.openingauditid) AND (upper(effectiveuser_1.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
  • Buffers: shared hit=109957
  • Worker 0: actual time=0.004..0.004 rows=1 loops=16487
  • Buffers: shared hit=82767
51. 32.847 32.847 ↑ 1.0 1 21,898 / 2

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue actualuser_1 (cost=0.56..2.43 rows=1 width=16) (actual time=0.003..0.003 rows=1 loops=21,898)

  • Output: actualuser_1.id, actualuser_1.revisionauditid, actualuser_1.keyuri, actualuser_1.parentid, actualuser_1.index, actualuser_1.uri, actualuser_1.slug, actualuser_1."boolean", actualuser_1.date, actualuser_1.number, actualuser_1.text, actualuser_1."time", actualuser_1.timespan, actualuser_1.daterange_startdate, actualuser_1.daterange_enddate, actualuser_1.daterange_relativedaterangeuri, actualuser_1.daterange_relativedaterangeasofdate, actualuser_1.workdayduration_decimalworkdays, actualuser_1.workdayduration_workdays, actualuser_1.workdayduration_hours, actualuser_1.workdayduration_minutes
  • Index Cond: ((actualuser_1.revisionauditid = mdrev.openingauditid) AND (upper(actualuser_1.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
  • Buffers: shared hit=109507
  • Worker 0: actual time=0.003..0.003 rows=1 loops=16487
  • Buffers: shared hit=82448
52. 0.000 26,612.025 ↑ 7.1 90 1

Subquery Scan on *SELECT* 5 (cost=3,178.79..438,005.60 rows=636 width=110) (actual time=23,796.320..26,612.025 rows=90 loops=1)

  • Output: "*SELECT* 5".entrydate, "*SELECT* 5".modifiedonutc, "*SELECT* 5".action, "*SELECT* 5".validuntilutc, "*SELECT* 5".modifiedbyuserid, "*SELECT* 5".modifiedbyuseruri, "*SELECT* 5".timesheetid, "*SELECT* 5".userid
  • Buffers: shared hit=35903967
53. 1,319.765 26,612.032 ↑ 7.1 90 1

Gather (cost=3,178.79..437,999.24 rows=636 width=378) (actual time=23,796.319..26,612.032 rows=90 loops=1)

  • Output: ts_5.id, ts_5.userid, NULL::date, NULL::date, NULL::text, 101, NULL::uuid, rev_2.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_2.uri, NULL::integer, NULL::text, NULL::text, mdrev_1.totimestamputc, NULL::timestamp without time zone, NULL::text
  • Workers Planned: 1
  • Workers Launched: 1
  • Buffers: shared hit=35903967
54. 0.034 25,292.267 ↑ 8.3 45 2 / 2

Result (cost=2,178.79..436,935.64 rows=374 width=378) (actual time=24,366.550..25,292.267 rows=45 loops=2)

  • Output: ts_5.id, ts_5.userid, NULL::date, NULL::date, NULL::text, 101, NULL::uuid, rev_2.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_2.uri, NULL::integer, NULL::text, NULL::text, mdrev_1.totimestamputc, NULL::timestamp without time zone, NULL::text
  • One-Time Filter: (101 = ANY ('{1,2,3,4,6,100,101,102}'::integer[]))
  • Buffers: shared hit=35903967
  • Worker 0: actual time=24938.235..26595.224 rows=89 loops=1
  • Buffers: shared hit=19899522
55. 0.043 25,292.233 ↑ 8.3 45 2 / 2

Nested Loop Anti Join (cost=2,178.79..436,935.64 rows=374 width=94) (actual time=24,366.547..25,292.233 rows=45 loops=2)

  • Output: mdrev_1.totimestamputc, rev_2.entrydate, ts_5.id, ts_5.userid, effectiveuser_2.uri
  • Buffers: shared hit=35903967
  • Worker 0: actual time=24938.233..26595.160 rows=89 loops=1
  • Buffers: shared hit=19899522
56. 0.078 25,291.020 ↑ 8.3 45 2 / 2

Nested Loop Left Join (cost=2,177.92..435,301.86 rows=374 width=110) (actual time=24,366.476..25,291.020 rows=45 loops=2)

  • Output: mdrev_1.totimestamputc, mdrev_1.timeentryid, rev_2.entrydate, ts_5.id, ts_5.userid, effectiveuser_2.uri
  • Buffers: shared hit=35902769
  • Worker 0: actual time=24938.174..26592.816 rows=89 loops=1
  • Buffers: shared hit=19898339
57. 0.071 25,290.807 ↑ 8.3 45 2 / 2

Nested Loop Left Join (cost=2,177.36..434,356.81 rows=372 width=126) (actual time=24,366.462..25,290.807 rows=45 loops=2)

  • Output: mdrev_1.totimestamputc, mdrev_1.timeentryid, mdrev_1.openingauditid, rev_2.entrydate, ts_5.id, ts_5.userid, effectiveuser_2.uri
  • Buffers: shared hit=35902319
  • Worker 0: actual time=24938.165..26592.411 rows=89 loops=1
  • Buffers: shared hit=19897894
58. 1.759 25,290.331 ↑ 8.2 45 2 / 2

Nested Loop Anti Join (cost=2,176.80..433,419.39 rows=369 width=64) (actual time=24,366.431..25,290.331 rows=45 loops=2)

  • Output: mdrev_1.totimestamputc, mdrev_1.timeentryid, mdrev_1.openingauditid, rev_2.entrydate, ts_5.id, ts_5.userid
  • Buffers: shared hit=35901868
  • Worker 0: actual time=24938.132..26591.488 rows=89 loops=1
  • Buffers: shared hit=19897448
59. 1,855.392 25,205.672 ↓ 24.0 10,362 2 / 2

Nested Loop (cost=2,173.05..431,360.26 rows=431 width=123) (actual time=18,326.903..25,205.672 rows=10,362 loops=2)

  • Output: mdrev_1.totimestamputc, mdrev_1.timeentryid, mdrev_1.openingauditid, mdrev_1.key, mdrev_1.closingauditid, rev_2.entrydate, ts_5.id, ts_5.userid
  • Buffers: shared hit=35708462
  • Worker 0: actual time=23197.019..26423.546 rows=20590 loops=1
  • Buffers: shared hit=19705307
60. 712.002 3,680.896 ↓ 7.8 2,458,673 2 / 2

Nested Loop (cost=2,172.49..16,113.33 rows=313,809 width=56) (actual time=231.464..3,680.896 rows=2,458,673 loops=2)

  • Output: rev_2.entrydate, rev_2.timeentryid, rev_2.fromtimestamputc, rev_2.totimestamputc, ts_5.id, ts_5.userid
  • Buffers: shared hit=1568797
  • Worker 0: actual time=244.108..3917.509 rows=2713389 loops=1
  • Buffers: shared hit=862991
61. 42.500 283.770 ↓ 42.7 51,637 2 / 2

Hash Join (cost=2,172.06..4,143.09 rows=1,209 width=28) (actual time=231.428..283.770 rows=51,637 loops=2)

  • Output: ts_5.id, ts_5.userid, ts_5.startdate, ts_5.enddate
  • Inner Unique: true
  • Hash Cond: (ts_5.id = timesheetpolicysettingssnapshot_2.timesheetid)
  • Buffers: shared hit=5003
  • Worker 0: actual time=244.072..299.126 rows=56803 loops=1
  • Buffers: shared hit=2577
62. 9.864 9.864 ↑ 1.2 51,637 2 / 2

Parallel Seq Scan on "2f766932716d4761981a2698126f0f51".timesheet ts_5 (cost=0.00..1,797.99 rows=60,799 width=28) (actual time=0.005..9.864 rows=51,637 loops=2)

  • Output: ts_5.id, ts_5.userid, ts_5.startdate, ts_5.enddate, ts_5.approvalstatus, ts_5.duedate, ts_5.autosubmitdatetimeutc, ts_5.lastautosubmitattemptdatetimeutc, ts_5.createdonutc
  • Buffers: shared hit=1190
  • Worker 0: actual time=0.005..10.258 rows=56803 loops=1
  • Buffers: shared hit=670
63. 15.534 231.406 ↓ 50.7 103,274 2 / 2

Hash (cost=2,146.61..2,146.61 rows=2,036 width=16) (actual time=231.406..231.406 rows=103,274 loops=2)

  • Output: timesheetpolicysettingssnapshot_2.timesheetid
  • Buckets: 131072 (originally 2048) Batches: 1 (originally 1) Memory Usage: 5865kB
  • Buffers: shared hit=3813
  • Worker 0: actual time=244.044..244.044 rows=103274 loops=1
  • Buffers: shared hit=1907
64. 64.785 215.872 ↓ 50.7 103,274 2 / 2

HashAggregate (cost=2,126.25..2,146.61 rows=2,036 width=16) (actual time=195.671..215.872 rows=103,274 loops=2)

  • Output: timesheetpolicysettingssnapshot_2.timesheetid
  • Group Key: timesheetpolicysettingssnapshot_2.timesheetid
  • Buffers: shared hit=3813
  • Worker 0: actual time=207.966..228.118 rows=103274 loops=1
  • Buffers: shared hit=1907
65. 151.087 151.087 ↓ 50.2 103,274 2 / 2

Index Scan using ixtspss2key on "2f766932716d4761981a2698126f0f51".timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_2 (cost=0.68..2,121.11 rows=2,056 width=16) (actual time=0.061..151.087 rows=103,274 loops=2)

  • Output: timesheetpolicysettingssnapshot_2.timesheetid
  • Index Cond: ((upper(timesheetpolicysettingssnapshot_2.key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text) AND (upper(timesheetpolicysettingssnapshot_2.uri) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text))
  • Buffers: shared hit=3813
  • Worker 0: actual time=0.076..159.785 rows=103274 loops=1
  • Buffers: shared hit=1907
66. 2,685.124 2,685.124 ↑ 5.2 48 103,274 / 2

Index Scan using ixter2userid on "2f766932716d4761981a2698126f0f51".timeentryrevision rev_2 (cost=0.43..7.38 rows=252 width=40) (actual time=0.008..0.052 rows=48 loops=103,274)

  • Output: rev_2.id, rev_2.txid, rev_2.previousrevisionid, rev_2.timeentryid, rev_2.fromtimestamputc, rev_2.totimestamputc, rev_2.openingauditid, rev_2.closingauditid, rev_2.userid, rev_2.entrydate, rev_2.timeallocationtype, rev_2.hours, rev_2.intime, rev_2.outtime
  • Index Cond: ((rev_2.userid = ts_5.userid) AND (rev_2.entrydate >= ts_5.startdate) AND (rev_2.entrydate <= ts_5.enddate))
  • Buffers: shared hit=1563794
  • Worker 0: actual time=0.008..0.050 rows=48 loops=56803
  • Buffers: shared hit=860414
67. 19,669.384 19,669.384 ↓ 0.0 0 4,917,346 / 2

Index Scan using ixtemrtimeentryid on "2f766932716d4761981a2698126f0f51".timeentrymetadatarevision mdrev_1 (cost=0.56..1.31 rows=1 width=99) (actual time=0.008..0.008 rows=0 loops=4,917,346)

  • Output: mdrev_1.id, mdrev_1.txid, mdrev_1.previousrevisionid, mdrev_1.timeentrymetadataid, mdrev_1.fromtimestamputc, mdrev_1.totimestamputc, mdrev_1.openingauditid, mdrev_1.closingauditid, mdrev_1.timeentryid, mdrev_1.parentid, mdrev_1.index, mdrev_1.key, mdrev_1.uri, mdrev_1.slug, mdrev_1."boolean", mdrev_1.date, mdrev_1.number, mdrev_1.text, mdrev_1."time", mdrev_1.timespan, mdrev_1.daterange_startdate, mdrev_1.daterange_enddate, mdrev_1.daterange_relativedaterangeuri, mdrev_1.daterange_relativedaterangeasofdate, mdrev_1.workdayduration_decimalworkdays, mdrev_1.workdayduration_workdays, mdrev_1.workdayduration_hours, mdrev_1.workdayduration_minutes
  • Index Cond: (mdrev_1.timeentryid = rev_2.timeentryid)
  • Filter: ((mdrev_1.totimestamputc IS NOT NULL) AND (mdrev_1.totimestamputc >= '2020-03-18 04:00:00'::timestamp without time zone) AND (mdrev_1.totimestamputc < '2020-03-19 04:00:00'::timestamp without time zone) AND (rev_2.fromtimestamputc <= mdrev_1.totimestamputc) AND ((rev_2.totimestamputc IS NULL) OR (rev_2.totimestamputc > mdrev_1.totimestamputc)))
  • Rows Removed by Filter: 14
  • Buffers: shared hit=34139665
  • Worker 0: actual time=0.008..0.008 rows=0 loops=2713389
  • Buffers: shared hit=18842316
68. 20.725 82.900 ↑ 1.0 1 20,725 / 2

Bitmap Heap Scan on "2f766932716d4761981a2698126f0f51".timeentrymetadatarevision (cost=3.75..4.77 rows=1 width=83) (actual time=0.008..0.008 rows=1 loops=20,725)

  • Output: timeentrymetadatarevision.id, timeentrymetadatarevision.txid, timeentrymetadatarevision.previousrevisionid, timeentrymetadatarevision.timeentrymetadataid, timeentrymetadatarevision.fromtimestamputc, timeentrymetadatarevision.totimestamputc, timeentrymetadatarevision.openingauditid, timeentrymetadatarevision.closingauditid, timeentrymetadatarevision.timeentryid, timeentrymetadatarevision.parentid, timeentrymetadatarevision.index, timeentrymetadatarevision.key, timeentrymetadatarevision.uri, timeentrymetadatarevision.slug, timeentrymetadatarevision."boolean", timeentrymetadatarevision.date, timeentrymetadatarevision.number, timeentrymetadatarevision.text, timeentrymetadatarevision."time", timeentrymetadatarevision.timespan, timeentrymetadatarevision.daterange_startdate, timeentrymetadatarevision.daterange_enddate, timeentrymetadatarevision.daterange_relativedaterangeuri, timeentrymetadatarevision.daterange_relativedaterangeasofdate, timeentrymetadatarevision.workdayduration_decimalworkdays, timeentrymetadatarevision.workdayduration_workdays, timeentrymetadatarevision.workdayduration_hours, timeentrymetadatarevision.workdayduration_minutes
  • Recheck Cond: ((timeentrymetadatarevision.timeentryid = mdrev_1.timeentryid) AND (timeentrymetadatarevision.fromtimestamputc = mdrev_1.totimestamputc))
  • Filter: ((timeentrymetadatarevision.key = mdrev_1.key) AND (timeentrymetadatarevision.openingauditid = mdrev_1.closingauditid))
  • Rows Removed by Filter: 2
  • Heap Blocks: exact=178
  • Buffers: shared hit=193406
  • Worker 0: actual time=0.008..0.008 rows=1 loops=20590
  • Buffers: shared hit=192141
69. 10.363 62.175 ↓ 0.0 0 20,725 / 2

BitmapAnd (cost=3.75..3.75 rows=1 width=0) (actual time=0.006..0.006 rows=0 loops=20,725)

  • Buffers: shared hit=166988
  • Worker 0: actual time=0.006..0.006 rows=0 loops=20590
  • Buffers: shared hit=165901
70. 31.088 31.088 ↓ 1.5 32 20,725 / 2

Bitmap Index Scan on ixtemrtimeentryid (cost=0.00..1.68 rows=22 width=0) (actual time=0.003..0.003 rows=32 loops=20,725)

  • Index Cond: (timeentrymetadatarevision.timeentryid = mdrev_1.timeentryid)
  • Buffers: shared hit=83427
  • Worker 0: actual time=0.003..0.003 rows=32 loops=20590
  • Buffers: shared hit=82887
71. 20.725 20.725 ↑ 6.5 6 20,725 / 2

Bitmap Index Scan on ixtemr2fromtimestamputc (cost=0.00..1.81 rows=39 width=0) (actual time=0.002..0.002 rows=6 loops=20,725)

  • Index Cond: (timeentrymetadatarevision.fromtimestamputc = mdrev_1.totimestamputc)
  • Buffers: shared hit=83561
  • Worker 0: actual time=0.002..0.002 rows=6 loops=20590
  • Buffers: shared hit=83014
72. 0.405 0.405 ↑ 1.0 1 90 / 2

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue effectiveuser_2 (cost=0.56..2.53 rows=1 width=78) (actual time=0.009..0.009 rows=1 loops=90)

  • Output: effectiveuser_2.id, effectiveuser_2.revisionauditid, effectiveuser_2.keyuri, effectiveuser_2.parentid, effectiveuser_2.index, effectiveuser_2.uri, effectiveuser_2.slug, effectiveuser_2."boolean", effectiveuser_2.date, effectiveuser_2.number, effectiveuser_2.text, effectiveuser_2."time", effectiveuser_2.timespan, effectiveuser_2.daterange_startdate, effectiveuser_2.daterange_enddate, effectiveuser_2.daterange_relativedaterangeuri, effectiveuser_2.daterange_relativedaterangeasofdate, effectiveuser_2.workdayduration_decimalworkdays, effectiveuser_2.workdayduration_workdays, effectiveuser_2.workdayduration_hours, effectiveuser_2.workdayduration_minutes
  • Index Cond: ((effectiveuser_2.revisionauditid = mdrev_1.openingauditid) AND (upper(effectiveuser_2.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
  • Buffers: shared hit=451
  • Worker 0: actual time=0.009..0.009 rows=1 loops=89
  • Buffers: shared hit=446
73. 0.135 0.135 ↑ 1.0 1 90 / 2

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue actualuser_2 (cost=0.56..2.53 rows=1 width=16) (actual time=0.003..0.003 rows=1 loops=90)

  • Output: actualuser_2.id, actualuser_2.revisionauditid, actualuser_2.keyuri, actualuser_2.parentid, actualuser_2.index, actualuser_2.uri, actualuser_2.slug, actualuser_2."boolean", actualuser_2.date, actualuser_2.number, actualuser_2.text, actualuser_2."time", actualuser_2.timespan, actualuser_2.daterange_startdate, actualuser_2.daterange_enddate, actualuser_2.daterange_relativedaterangeuri, actualuser_2.daterange_relativedaterangeasofdate, actualuser_2.workdayduration_decimalworkdays, actualuser_2.workdayduration_workdays, actualuser_2.workdayduration_hours, actualuser_2.workdayduration_minutes
  • Index Cond: ((actualuser_2.revisionauditid = mdrev_1.openingauditid) AND (upper(actualuser_2.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
  • Buffers: shared hit=450
  • Worker 0: actual time=0.003..0.003 rows=1 loops=89
  • Buffers: shared hit=445
74. 0.090 1.170 ↓ 0.0 0 90 / 2

Nested Loop Left Join (cost=0.86..4.36 rows=1 width=24) (actual time=0.026..0.026 rows=0 loops=90)

  • Output: rev_1_1.timeentryid, rev_1_1.totimestamputc
  • Inner Unique: true
  • Filter: (child_rev.id IS NULL)
  • Rows Removed by Filter: 1
  • Buffers: shared hit=1198
  • Worker 0: actual time=0.025..0.025 rows=0 loops=89
  • Buffers: shared hit=1183
75. 0.810 0.810 ↑ 1.0 1 90 / 2

Index Scan using ixtertimeentryid on "2f766932716d4761981a2698126f0f51".timeentryrevision rev_1_1 (cost=0.43..3.87 rows=1 width=40) (actual time=0.011..0.018 rows=1 loops=90)

  • Output: rev_1_1.id, rev_1_1.txid, rev_1_1.previousrevisionid, rev_1_1.timeentryid, rev_1_1.fromtimestamputc, rev_1_1.totimestamputc, rev_1_1.openingauditid, rev_1_1.closingauditid, rev_1_1.userid, rev_1_1.entrydate, rev_1_1.timeallocationtype, rev_1_1.hours, rev_1_1.intime, rev_1_1.outtime
  • Index Cond: (rev_1_1.timeentryid = mdrev_1.timeentryid)
  • Filter: (rev_1_1.totimestamputc = mdrev_1.totimestamputc)
  • Rows Removed by Filter: 3
  • Buffers: shared hit=837
  • Worker 0: actual time=0.010..0.017 rows=1 loops=89
  • Buffers: shared hit=826
76. 0.270 0.270 ↑ 1.0 1 90 / 2

Index Scan using timeentryrevision_uniquepreviousrevisionid on "2f766932716d4761981a2698126f0f51".timeentryrevision child_rev (cost=0.43..0.48 rows=1 width=32) (actual time=0.006..0.006 rows=1 loops=90)

  • Output: child_rev.id, child_rev.txid, child_rev.previousrevisionid, child_rev.timeentryid, child_rev.fromtimestamputc, child_rev.totimestamputc, child_rev.openingauditid, child_rev.closingauditid, child_rev.userid, child_rev.entrydate, child_rev.timeallocationtype, child_rev.hours, child_rev.intime, child_rev.outtime
  • Index Cond: (child_rev.previousrevisionid = rev_1_1.id)
  • Buffers: shared hit=361
  • Worker 0: actual time=0.006..0.006 rows=1 loops=89
  • Buffers: shared hit=357
77. 0.002 3.414 ↓ 9.0 9 1

Subquery Scan on *SELECT* 6 (cost=3.01..973.19 rows=1 width=110) (actual time=0.534..3.414 rows=9 loops=1)

  • Output: "*SELECT* 6".entrydate, "*SELECT* 6".modifiedonutc, "*SELECT* 6".action, "*SELECT* 6".validuntilutc, "*SELECT* 6".modifiedbyuserid, "*SELECT* 6".modifiedbyuseruri, "*SELECT* 6".timesheetid, "*SELECT* 6".userid
  • Buffers: shared hit=1933
78. 0.007 3.412 ↓ 9.0 9 1

Result (cost=3.01..973.18 rows=1 width=378) (actual time=0.534..3.412 rows=9 loops=1)

  • Output: ts_6.id, ts_6.userid, NULL::date, NULL::date, NULL::text, 101, NULL::uuid, rev_3.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_3.uri, NULL::integer, NULL::text, NULL::text, oefvr.fromtimestamputc, oefvr.totimestamputc, NULL::text
  • One-Time Filter: (101 = ANY ('{1,2,3,4,6,100,101,102}'::integer[]))
  • Buffers: shared hit=1933
79. 0.015 3.405 ↓ 9.0 9 1

Nested Loop Semi Join (cost=3.01..973.18 rows=1 width=378) (actual time=0.530..3.405 rows=9 loops=1)

  • Output: ts_6.id, ts_6.userid, NULL::date, NULL::date, NULL::text, 101, NULL::uuid, rev_3.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_3.uri, NULL::integer, NULL::text, NULL::text, oefvr.fromtimestamputc, oefvr.totimestamputc, NULL::text
  • Buffers: shared hit=1933
80. 0.007 2.913 ↓ 9.0 9 1

Nested Loop Left Join (cost=2.57..969.91 rows=1 width=102) (actual time=0.459..2.913 rows=9 loops=1)

  • Output: oefvr.fromtimestamputc, oefvr.totimestamputc, rev_3.entrydate, ts_6.id, ts_6.userid, effectiveuser_3.uri
  • Buffers: shared hit=1885
81. 0.014 2.870 ↓ 9.0 9 1

Nested Loop Left Join (cost=2.01..967.32 rows=1 width=118) (actual time=0.448..2.870 rows=9 loops=1)

  • Output: oefvr.fromtimestamputc, oefvr.totimestamputc, oefvr.openingauditid, rev_3.entrydate, ts_6.id, ts_6.userid, effectiveuser_3.uri
  • Buffers: shared hit=1840
82. 0.007 2.775 ↓ 9.0 9 1

Nested Loop (cost=1.45..964.73 rows=1 width=56) (actual time=0.426..2.775 rows=9 loops=1)

  • Output: oefvr.fromtimestamputc, oefvr.totimestamputc, oefvr.openingauditid, rev_3.entrydate, ts_6.id, ts_6.userid
  • Buffers: shared hit=1795
83. 0.011 2.102 ↓ 9.0 9 1

Nested Loop (cost=1.15..964.05 rows=1 width=40) (actual time=0.321..2.102 rows=9 loops=1)

  • Output: oefvr.fromtimestamputc, oefvr.totimestamputc, oefvr.openingauditid, rev_3.entrydate, rev_3.userid
  • Buffers: shared hit=1699
84. 0.235 2.028 ↓ 9.0 9 1

Nested Loop Anti Join (cost=0.72..959.56 rows=1 width=48) (actual time=0.306..2.028 rows=9 loops=1)

  • Output: oefvr.fromtimestamputc, oefvr.totimestamputc, oefvr.objectid, oefvr.openingauditid
  • Buffers: shared hit=1651
85. 0.165 0.165 ↓ 1.2 407 1

Index Scan using ixoefvr2fromtimestamputc on "2f766932716d4761981a2698126f0f51".objectextensionfieldvaluerevision oefvr (cost=0.29..143.38 rows=333 width=48) (actual time=0.029..0.165 rows=407 loops=1)

  • Output: oefvr.id, oefvr.txid, oefvr.previousrevisionid, oefvr.objectextensionfieldvalueid, oefvr.fromtimestamputc, oefvr.totimestamputc, oefvr.openingauditid, oefvr.closingauditid, oefvr.tagid, oefvr.objectid, oefvr.definitionid, oefvr.numericvalue, oefvr.textvalue, oefvr.urivalue
  • Index Cond: ((oefvr.fromtimestamputc >= '2020-03-18 04:00:00'::timestamp without time zone) AND (oefvr.fromtimestamputc < '2020-03-19 04:00:00'::timestamp without time zone))
  • Buffers: shared hit=16
86. 1.628 1.628 ↑ 1.0 1 407

Index Scan using timeentryrevision_singleinitialrevision on "2f766932716d4761981a2698126f0f51".timeentryrevision timeentryrevision_1 (cost=0.43..2.44 rows=1 width=24) (actual time=0.004..0.004 rows=1 loops=407)

  • Output: timeentryrevision_1.id, timeentryrevision_1.txid, timeentryrevision_1.previousrevisionid, timeentryrevision_1.timeentryid, timeentryrevision_1.fromtimestamputc, timeentryrevision_1.totimestamputc, timeentryrevision_1.openingauditid, timeentryrevision_1.closingauditid, timeentryrevision_1.userid, timeentryrevision_1.entrydate, timeentryrevision_1.timeallocationtype, timeentryrevision_1.hours, timeentryrevision_1.intime, timeentryrevision_1.outtime
  • Index Cond: (timeentryrevision_1.timeentryid = oefvr.objectid)
  • Filter: (timeentryrevision_1.fromtimestamputc = oefvr.fromtimestamputc)
  • Rows Removed by Filter: 0
  • Buffers: shared hit=1635
87. 0.063 0.063 ↑ 1.0 1 9

Index Scan using ixtertimeentryid on "2f766932716d4761981a2698126f0f51".timeentryrevision rev_3 (cost=0.43..4.48 rows=1 width=40) (actual time=0.006..0.007 rows=1 loops=9)

  • Output: rev_3.id, rev_3.txid, rev_3.previousrevisionid, rev_3.timeentryid, rev_3.fromtimestamputc, rev_3.totimestamputc, rev_3.openingauditid, rev_3.closingauditid, rev_3.userid, rev_3.entrydate, rev_3.timeallocationtype, rev_3.hours, rev_3.intime, rev_3.outtime
  • Index Cond: (rev_3.timeentryid = oefvr.objectid)
  • Filter: ((rev_3.fromtimestamputc <= oefvr.fromtimestamputc) AND ((rev_3.totimestamputc IS NULL) OR (rev_3.totimestamputc > oefvr.fromtimestamputc)))
  • Rows Removed by Filter: 1
  • Buffers: shared hit=48
88. 0.666 0.666 ↑ 5.0 1 9

Index Scan using uix2tsuseridstartdate on "2f766932716d4761981a2698126f0f51".timesheet ts_6 (cost=0.29..0.63 rows=5 width=28) (actual time=0.074..0.074 rows=1 loops=9)

  • Output: ts_6.id, ts_6.userid, ts_6.startdate, ts_6.enddate, ts_6.approvalstatus, ts_6.duedate, ts_6.autosubmitdatetimeutc, ts_6.lastautosubmitattemptdatetimeutc, ts_6.createdonutc
  • Index Cond: ((ts_6.userid = rev_3.userid) AND (rev_3.entrydate >= ts_6.startdate))
  • Filter: (rev_3.entrydate <= ts_6.enddate)
  • Rows Removed by Filter: 50
  • Buffers: shared hit=96
89. 0.081 0.081 ↑ 1.0 1 9

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue effectiveuser_3 (cost=0.56..2.58 rows=1 width=78) (actual time=0.009..0.009 rows=1 loops=9)

  • Output: effectiveuser_3.id, effectiveuser_3.revisionauditid, effectiveuser_3.keyuri, effectiveuser_3.parentid, effectiveuser_3.index, effectiveuser_3.uri, effectiveuser_3.slug, effectiveuser_3."boolean", effectiveuser_3.date, effectiveuser_3.number, effectiveuser_3.text, effectiveuser_3."time", effectiveuser_3.timespan, effectiveuser_3.daterange_startdate, effectiveuser_3.daterange_enddate, effectiveuser_3.daterange_relativedaterangeuri, effectiveuser_3.daterange_relativedaterangeasofdate, effectiveuser_3.workdayduration_decimalworkdays, effectiveuser_3.workdayduration_workdays, effectiveuser_3.workdayduration_hours, effectiveuser_3.workdayduration_minutes
  • Index Cond: ((effectiveuser_3.revisionauditid = oefvr.openingauditid) AND (upper(effectiveuser_3.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
  • Buffers: shared hit=45
90. 0.036 0.036 ↑ 1.0 1 9

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue actualuser_3 (cost=0.56..2.58 rows=1 width=16) (actual time=0.004..0.004 rows=1 loops=9)

  • Output: actualuser_3.id, actualuser_3.revisionauditid, actualuser_3.keyuri, actualuser_3.parentid, actualuser_3.index, actualuser_3.uri, actualuser_3.slug, actualuser_3."boolean", actualuser_3.date, actualuser_3.number, actualuser_3.text, actualuser_3."time", actualuser_3.timespan, actualuser_3.daterange_startdate, actualuser_3.daterange_enddate, actualuser_3.daterange_relativedaterangeuri, actualuser_3.daterange_relativedaterangeasofdate, actualuser_3.workdayduration_decimalworkdays, actualuser_3.workdayduration_workdays, actualuser_3.workdayduration_hours, actualuser_3.workdayduration_minutes
  • Index Cond: ((actualuser_3.revisionauditid = oefvr.openingauditid) AND (upper(actualuser_3.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
  • Buffers: shared hit=45
91. 0.477 0.477 ↑ 1.0 1 9

Index Scan using ixtpsstimesheetid on "2f766932716d4761981a2698126f0f51".timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_3 (cost=0.43..3.25 rows=1 width=16) (actual time=0.053..0.053 rows=1 loops=9)

  • Output: timesheetpolicysettingssnapshot_3.id, timesheetpolicysettingssnapshot_3.timesheetid, timesheetpolicysettingssnapshot_3.parentid, timesheetpolicysettingssnapshot_3.index, timesheetpolicysettingssnapshot_3.key, timesheetpolicysettingssnapshot_3.uri, timesheetpolicysettingssnapshot_3.slug, timesheetpolicysettingssnapshot_3."boolean", timesheetpolicysettingssnapshot_3.date, timesheetpolicysettingssnapshot_3.number, timesheetpolicysettingssnapshot_3.text, timesheetpolicysettingssnapshot_3."time", timesheetpolicysettingssnapshot_3.timespan, timesheetpolicysettingssnapshot_3.daterange_startdate, timesheetpolicysettingssnapshot_3.daterange_enddate, timesheetpolicysettingssnapshot_3.daterange_relativedaterangeuri, timesheetpolicysettingssnapshot_3.daterange_relativedaterangeasofdate, timesheetpolicysettingssnapshot_3.workdayduration_decimalworkdays, timesheetpolicysettingssnapshot_3.workdayduration_workdays, timesheetpolicysettingssnapshot_3.workdayduration_hours, timesheetpolicysettingssnapshot_3.workdayduration_minutes
  • Index Cond: (timesheetpolicysettingssnapshot_3.timesheetid = ts_6.id)
  • Filter: ((upper(timesheetpolicysettingssnapshot_3.key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text) AND (upper(timesheetpolicysettingssnapshot_3.uri) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text))
  • Rows Removed by Filter: 46
  • Buffers: shared hit=48
92. 0.000 2.824 ↓ 0.0 0 1

Subquery Scan on *SELECT* 7 (cost=3.74..1,326.55 rows=1 width=110) (actual time=2.824..2.824 rows=0 loops=1)

  • Output: "*SELECT* 7".entrydate, "*SELECT* 7".modifiedonutc, "*SELECT* 7".action, "*SELECT* 7".validuntilutc, "*SELECT* 7".modifiedbyuserid, "*SELECT* 7".modifiedbyuseruri, "*SELECT* 7".timesheetid, "*SELECT* 7".userid
  • Buffers: shared hit=854
93. 0.003 2.824 ↓ 0.0 0 1

Result (cost=3.74..1,326.54 rows=1 width=378) (actual time=2.824..2.824 rows=0 loops=1)

  • Output: ts_7.id, ts_7.userid, NULL::date, NULL::date, NULL::text, 101, NULL::uuid, rev_4.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_4.uri, NULL::integer, NULL::text, NULL::text, oefvr_1.totimestamputc, NULL::timestamp without time zone, NULL::text
  • One-Time Filter: (101 = ANY ('{1,2,3,4,6,100,101,102}'::integer[]))
  • Buffers: shared hit=854
94. 0.000 2.821 ↓ 0.0 0 1

Nested Loop Anti Join (cost=3.74..1,326.54 rows=1 width=378) (actual time=2.821..2.821 rows=0 loops=1)

  • Output: ts_7.id, ts_7.userid, NULL::date, NULL::date, NULL::text, 101, NULL::uuid, rev_4.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_4.uri, NULL::integer, NULL::text, NULL::text, oefvr_1.totimestamputc, NULL::timestamp without time zone, NULL::text
  • Buffers: shared hit=854
95. 0.004 2.821 ↓ 0.0 0 1

Nested Loop Anti Join (cost=2.86..1,321.54 rows=1 width=110) (actual time=2.820..2.821 rows=0 loops=1)

  • Output: oefvr_1.totimestamputc, oefvr_1.objectid, rev_4.entrydate, ts_7.id, ts_7.userid, effectiveuser_4.uri
  • Buffers: shared hit=854
96. 0.005 2.790 ↓ 9.0 9 1

Nested Loop Left Join (cost=2.57..1,319.21 rows=1 width=142) (actual time=1.460..2.790 rows=9 loops=1)

  • Output: oefvr_1.totimestamputc, oefvr_1.objectid, oefvr_1.definitionid, oefvr_1.closingauditid, rev_4.entrydate, ts_7.id, ts_7.userid, effectiveuser_4.uri
  • Buffers: shared hit=827
97. 0.012 2.749 ↓ 9.0 9 1

Nested Loop Left Join (cost=2.01..1,316.62 rows=1 width=158) (actual time=1.451..2.749 rows=9 loops=1)

  • Output: oefvr_1.totimestamputc, oefvr_1.objectid, oefvr_1.openingauditid, oefvr_1.definitionid, oefvr_1.closingauditid, rev_4.entrydate, ts_7.id, ts_7.userid, effectiveuser_4.uri
  • Buffers: shared hit=782
98. 0.004 2.665 ↓ 9.0 9 1

Nested Loop Semi Join (cost=1.45..1,314.03 rows=1 width=96) (actual time=1.431..2.665 rows=9 loops=1)

  • Output: oefvr_1.totimestamputc, oefvr_1.objectid, oefvr_1.openingauditid, oefvr_1.definitionid, oefvr_1.closingauditid, rev_4.entrydate, ts_7.id, ts_7.userid
  • Buffers: shared hit=737
99. 0.011 2.184 ↑ 4.9 9 1

Nested Loop (cost=1.02..1,171.05 rows=44 width=96) (actual time=1.364..2.184 rows=9 loops=1)

  • Output: oefvr_1.totimestamputc, oefvr_1.objectid, oefvr_1.openingauditid, oefvr_1.definitionid, oefvr_1.closingauditid, rev_4.entrydate, ts_7.id, ts_7.userid
  • Buffers: shared hit=689
100. 0.017 1.588 ↓ 1.1 9 1

Nested Loop (cost=0.72..1,165.61 rows=8 width=80) (actual time=1.277..1.588 rows=9 loops=1)

  • Output: oefvr_1.totimestamputc, oefvr_1.objectid, oefvr_1.openingauditid, oefvr_1.definitionid, oefvr_1.closingauditid, rev_4.entrydate, rev_4.userid
  • Buffers: shared hit=593
101. 1.223 1.223 ↓ 4.5 58 1

Index Scan using ixoefvr2fromtimestamputc on "2f766932716d4761981a2698126f0f51".objectextensionfieldvaluerevision oefvr_1 (cost=0.29..1,106.98 rows=13 width=72) (actual time=1.137..1.223 rows=58 loops=1)

  • Output: oefvr_1.id, oefvr_1.txid, oefvr_1.previousrevisionid, oefvr_1.objectextensionfieldvalueid, oefvr_1.fromtimestamputc, oefvr_1.totimestamputc, oefvr_1.openingauditid, oefvr_1.closingauditid, oefvr_1.tagid, oefvr_1.objectid, oefvr_1.definitionid, oefvr_1.numericvalue, oefvr_1.textvalue, oefvr_1.urivalue
  • Index Cond: ((oefvr_1.totimestamputc IS NOT NULL) AND (oefvr_1.totimestamputc >= '2020-03-18 04:00:00'::timestamp without time zone) AND (oefvr_1.totimestamputc < '2020-03-19 04:00:00'::timestamp without time zone))
  • Buffers: shared hit=296
102. 0.348 0.348 ↓ 0.0 0 58

Index Scan using ixtertimeentryid on "2f766932716d4761981a2698126f0f51".timeentryrevision rev_4 (cost=0.43..4.50 rows=1 width=40) (actual time=0.006..0.006 rows=0 loops=58)

  • Output: rev_4.id, rev_4.txid, rev_4.previousrevisionid, rev_4.timeentryid, rev_4.fromtimestamputc, rev_4.totimestamputc, rev_4.openingauditid, rev_4.closingauditid, rev_4.userid, rev_4.entrydate, rev_4.timeallocationtype, rev_4.hours, rev_4.intime, rev_4.outtime
  • Index Cond: (rev_4.timeentryid = oefvr_1.objectid)
  • Filter: ((rev_4.fromtimestamputc <= oefvr_1.totimestamputc) AND ((rev_4.totimestamputc IS NULL) OR (rev_4.totimestamputc > oefvr_1.totimestamputc)))
  • Rows Removed by Filter: 1
  • Buffers: shared hit=297
103. 0.585 0.585 ↑ 5.0 1 9

Index Scan using uix2tsuseridstartdate on "2f766932716d4761981a2698126f0f51".timesheet ts_7 (cost=0.29..0.63 rows=5 width=28) (actual time=0.065..0.065 rows=1 loops=9)

  • Output: ts_7.id, ts_7.userid, ts_7.startdate, ts_7.enddate, ts_7.approvalstatus, ts_7.duedate, ts_7.autosubmitdatetimeutc, ts_7.lastautosubmitattemptdatetimeutc, ts_7.createdonutc
  • Index Cond: ((ts_7.userid = rev_4.userid) AND (rev_4.entrydate >= ts_7.startdate))
  • Filter: (rev_4.entrydate <= ts_7.enddate)
  • Rows Removed by Filter: 50
  • Buffers: shared hit=96
104. 0.477 0.477 ↑ 1.0 1 9

Index Scan using ixtpsstimesheetid on "2f766932716d4761981a2698126f0f51".timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_4 (cost=0.43..3.25 rows=1 width=16) (actual time=0.053..0.053 rows=1 loops=9)

  • Output: timesheetpolicysettingssnapshot_4.id, timesheetpolicysettingssnapshot_4.timesheetid, timesheetpolicysettingssnapshot_4.parentid, timesheetpolicysettingssnapshot_4.index, timesheetpolicysettingssnapshot_4.key, timesheetpolicysettingssnapshot_4.uri, timesheetpolicysettingssnapshot_4.slug, timesheetpolicysettingssnapshot_4."boolean", timesheetpolicysettingssnapshot_4.date, timesheetpolicysettingssnapshot_4.number, timesheetpolicysettingssnapshot_4.text, timesheetpolicysettingssnapshot_4."time", timesheetpolicysettingssnapshot_4.timespan, timesheetpolicysettingssnapshot_4.daterange_startdate, timesheetpolicysettingssnapshot_4.daterange_enddate, timesheetpolicysettingssnapshot_4.daterange_relativedaterangeuri, timesheetpolicysettingssnapshot_4.daterange_relativedaterangeasofdate, timesheetpolicysettingssnapshot_4.workdayduration_decimalworkdays, timesheetpolicysettingssnapshot_4.workdayduration_workdays, timesheetpolicysettingssnapshot_4.workdayduration_hours, timesheetpolicysettingssnapshot_4.workdayduration_minutes
  • Index Cond: (timesheetpolicysettingssnapshot_4.timesheetid = ts_7.id)
  • Filter: ((upper(timesheetpolicysettingssnapshot_4.key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text) AND (upper(timesheetpolicysettingssnapshot_4.uri) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT:GEN4-TIMESHEET'::text))
  • Rows Removed by Filter: 46
  • Buffers: shared hit=48
105. 0.072 0.072 ↑ 1.0 1 9

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue effectiveuser_4 (cost=0.56..2.58 rows=1 width=78) (actual time=0.008..0.008 rows=1 loops=9)

  • Output: effectiveuser_4.id, effectiveuser_4.revisionauditid, effectiveuser_4.keyuri, effectiveuser_4.parentid, effectiveuser_4.index, effectiveuser_4.uri, effectiveuser_4.slug, effectiveuser_4."boolean", effectiveuser_4.date, effectiveuser_4.number, effectiveuser_4.text, effectiveuser_4."time", effectiveuser_4.timespan, effectiveuser_4.daterange_startdate, effectiveuser_4.daterange_enddate, effectiveuser_4.daterange_relativedaterangeuri, effectiveuser_4.daterange_relativedaterangeasofdate, effectiveuser_4.workdayduration_decimalworkdays, effectiveuser_4.workdayduration_workdays, effectiveuser_4.workdayduration_hours, effectiveuser_4.workdayduration_minutes
  • Index Cond: ((effectiveuser_4.revisionauditid = oefvr_1.openingauditid) AND (upper(effectiveuser_4.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
  • Buffers: shared hit=45
106. 0.036 0.036 ↑ 1.0 1 9

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue actualuser_4 (cost=0.56..2.58 rows=1 width=16) (actual time=0.003..0.004 rows=1 loops=9)

  • Output: actualuser_4.id, actualuser_4.revisionauditid, actualuser_4.keyuri, actualuser_4.parentid, actualuser_4.index, actualuser_4.uri, actualuser_4.slug, actualuser_4."boolean", actualuser_4.date, actualuser_4.number, actualuser_4.text, actualuser_4."time", actualuser_4.timespan, actualuser_4.daterange_startdate, actualuser_4.daterange_enddate, actualuser_4.daterange_relativedaterangeuri, actualuser_4.daterange_relativedaterangeasofdate, actualuser_4.workdayduration_decimalworkdays, actualuser_4.workdayduration_workdays, actualuser_4.workdayduration_hours, actualuser_4.workdayduration_minutes
  • Index Cond: ((actualuser_4.revisionauditid = oefvr_1.openingauditid) AND (upper(actualuser_4.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
  • Buffers: shared hit=45
107. 0.027 0.027 ↑ 1.0 1 9

Index Scan using ixoefvr2fromtimestamputc on "2f766932716d4761981a2698126f0f51".objectextensionfieldvaluerevision (cost=0.29..2.32 rows=1 width=56) (actual time=0.003..0.003 rows=1 loops=9)

  • Output: objectextensionfieldvaluerevision.id, objectextensionfieldvaluerevision.txid, objectextensionfieldvaluerevision.previousrevisionid, objectextensionfieldvaluerevision.objectextensionfieldvalueid, objectextensionfieldvaluerevision.fromtimestamputc, objectextensionfieldvaluerevision.totimestamputc, objectextensionfieldvaluerevision.openingauditid, objectextensionfieldvaluerevision.closingauditid, objectextensionfieldvaluerevision.tagid, objectextensionfieldvaluerevision.objectid, objectextensionfieldvaluerevision.definitionid, objectextensionfieldvaluerevision.numericvalue, objectextensionfieldvaluerevision.textvalue, objectextensionfieldvaluerevision.urivalue
  • Index Cond: (objectextensionfieldvaluerevision.fromtimestamputc = oefvr_1.totimestamputc)
  • Filter: ((objectextensionfieldvaluerevision.objectid = oefvr_1.objectid) AND (objectextensionfieldvaluerevision.definitionid = oefvr_1.definitionid) AND (objectextensionfieldvaluerevision.openingauditid = oefvr_1.closingauditid))
  • Buffers: shared hit=27
108. 0.000 0.000 ↓ 0.0 0

Nested Loop Left Join (cost=0.86..4.98 rows=1 width=24) (never executed)

  • Output: rev_1_2.timeentryid, rev_1_2.totimestamputc
  • Inner Unique: true
  • Filter: (child_rev_1.id IS NULL)
109. 0.000 0.000 ↓ 0.0 0

Index Scan using ixtertimeentryid on "2f766932716d4761981a2698126f0f51".timeentryrevision rev_1_2 (cost=0.43..4.49 rows=1 width=40) (never executed)

  • Output: rev_1_2.id, rev_1_2.txid, rev_1_2.previousrevisionid, rev_1_2.timeentryid, rev_1_2.fromtimestamputc, rev_1_2.totimestamputc, rev_1_2.openingauditid, rev_1_2.closingauditid, rev_1_2.userid, rev_1_2.entrydate, rev_1_2.timeallocationtype, rev_1_2.hours, rev_1_2.intime, rev_1_2.outtime
  • Index Cond: (rev_1_2.timeentryid = oefvr_1.objectid)
  • Filter: (rev_1_2.totimestamputc = oefvr_1.totimestamputc)
110. 0.000 0.000 ↓ 0.0 0

Index Scan using timeentryrevision_uniquepreviousrevisionid on "2f766932716d4761981a2698126f0f51".timeentryrevision child_rev_1 (cost=0.43..0.48 rows=1 width=32) (never executed)

  • Output: child_rev_1.id, child_rev_1.txid, child_rev_1.previousrevisionid, child_rev_1.timeentryid, child_rev_1.fromtimestamputc, child_rev_1.totimestamputc, child_rev_1.openingauditid, child_rev_1.closingauditid, child_rev_1.userid, child_rev_1.entrydate, child_rev_1.timeallocationtype, child_rev_1.hours, child_rev_1.intime, child_rev_1.outtime
  • Index Cond: (child_rev_1.previousrevisionid = rev_1_2.id)
111. 0.093 261.864 ↓ 531.0 531 1

Subquery Scan on *SELECT* 8 (cost=1,002.41..123,431.97 rows=1 width=110) (actual time=204.814..261.864 rows=531 loops=1)

  • Output: "*SELECT* 8".entrydate, "*SELECT* 8".modifiedonutc, "*SELECT* 8".action, "*SELECT* 8".validuntilutc, "*SELECT* 8".modifiedbyuserid, "*SELECT* 8".modifiedbyuseruri, "*SELECT* 8".timesheetid, "*SELECT* 8".userid
  • Buffers: shared hit=125887
112. 0.133 261.771 ↓ 531.0 531 1

Result (cost=1,002.41..123,431.96 rows=1 width=378) (actual time=204.812..261.771 rows=531 loops=1)

  • Output: ts_8.id, ts_8.userid, NULL::date, NULL::date, NULL::text, 102, NULL::uuid, rev_5.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_5.uri, NULL::integer, NULL::text, NULL::text, rev_5.totimestamputc, NULL::timestamp without time zone, NULL::text
  • One-Time Filter: (102 = ANY ('{1,2,3,4,6,100,101,102}'::integer[]))
  • Buffers: shared hit=125887
113. 0.385 261.638 ↓ 531.0 531 1

Nested Loop Left Join (cost=1,002.41..123,431.96 rows=1 width=378) (actual time=204.810..261.638 rows=531 loops=1)

  • Output: ts_8.id, ts_8.userid, NULL::date, NULL::date, NULL::text, 102, NULL::uuid, rev_5.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_5.uri, NULL::integer, NULL::text, NULL::text, rev_5.totimestamputc, NULL::timestamp without time zone, NULL::text
  • Buffers: shared hit=125887
114. 0.269 259.129 ↓ 531.0 531 1

Nested Loop Left Join (cost=1,001.84..123,429.37 rows=1 width=110) (actual time=204.794..259.129 rows=531 loops=1)

  • Output: ts_8.id, ts_8.userid, rev_5.entrydate, rev_5.totimestamputc, rev_5.closingauditid, effectiveuser_5.uri
  • Buffers: shared hit=123763
115. 0.173 257.267 ↓ 531.0 531 1

Nested Loop Left Join (cost=1,001.28..123,426.80 rows=1 width=110) (actual time=204.783..257.267 rows=531 loops=1)

  • Output: ts_8.id, ts_8.userid, rev_5.entrydate, rev_5.totimestamputc, rev_5.closingauditid, effectiveuser_5.uri
  • Buffers: shared hit=121108
116. 0.265 253.908 ↓ 531.0 531 1

Nested Loop (cost=1,000.73..123,424.22 rows=1 width=48) (actual time=204.758..253.908 rows=531 loops=1)

  • Output: ts_8.id, ts_8.userid, rev_5.entrydate, rev_5.totimestamputc, rev_5.closingauditid
  • Buffers: shared hit=118448
117. 0.000 225.500 ↓ 531.0 531 1

Gather (cost=1,000.43..123,423.05 rows=1 width=32) (actual time=204.698..225.500 rows=531 loops=1)

  • Output: rev_5.entrydate, rev_5.totimestamputc, rev_5.userid, rev_5.closingauditid
  • Workers Planned: 2
  • Workers Launched: 2
  • Buffers: shared hit=112799
118. 0.792 232.999 ↓ 177.0 177 3 / 3

Nested Loop Left Join (cost=0.43..122,422.95 rows=1 width=32) (actual time=200.120..232.999 rows=177 loops=3)

  • Output: rev_5.entrydate, rev_5.totimestamputc, rev_5.userid, rev_5.closingauditid
  • Inner Unique: true
  • Filter: (child_rev_2.id IS NULL)
  • Rows Removed by Filter: 1828
  • Buffers: shared hit=112799
  • Worker 0: actual time=203.538..237.039 rows=124 loops=1
  • Buffers: shared hit=38431
  • Worker 1: actual time=193.053..237.609 rows=229 loops=1
  • Buffers: shared hit=41423
119. 222.184 222.184 ↓ 1.6 2,005 3 / 3

Parallel Seq Scan on "2f766932716d4761981a2698126f0f51".timeentryrevision rev_5 (cost=0.00..119,350.98 rows=1,274 width=48) (actual time=188.906..222.184 rows=2,005 loops=3)

  • Output: rev_5.id, rev_5.txid, rev_5.previousrevisionid, rev_5.timeentryid, rev_5.fromtimestamputc, rev_5.totimestamputc, rev_5.openingauditid, rev_5.closingauditid, rev_5.userid, rev_5.entrydate, rev_5.timeallocationtype, rev_5.hours, rev_5.intime, rev_5.outtime
  • Filter: ((rev_5.totimestamputc IS NOT NULL) AND (rev_5.totimestamputc >= '2020-03-18 04:00:00'::timestamp without time zone) AND (rev_5.totimestamputc < '2020-03-19 04:00:00'::timestamp without time zone))
  • Rows Removed by Filter: 1637199
  • Buffers: shared hit=88625
  • Worker 0: actual time=186.881..224.700 rows=2110 loops=1
  • Buffers: shared hit=29960
  • Worker 1: actual time=189.017..222.814 rows=2915 loops=1
  • Buffers: shared hit=29729
120. 10.023 10.023 ↑ 1.0 1 6,014 / 3

Index Scan using timeentryrevision_uniquepreviousrevisionid on "2f766932716d4761981a2698126f0f51".timeentryrevision child_rev_2 (cost=0.43..2.40 rows=1 width=32) (actual time=0.005..0.005 rows=1 loops=6,014)

  • Output: child_rev_2.id, child_rev_2.txid, child_rev_2.previousrevisionid, child_rev_2.timeentryid, child_rev_2.fromtimestamputc, child_rev_2.totimestamputc, child_rev_2.openingauditid, child_rev_2.closingauditid, child_rev_2.userid, child_rev_2.entrydate, child_rev_2.timeallocationtype, child_rev_2.hours, child_rev_2.intime, child_rev_2.outtime
  • Index Cond: (child_rev_2.previousrevisionid = rev_5.id)
  • Buffers: shared hit=24174
  • Worker 0: actual time=0.005..0.005 rows=1 loops=2110
  • Buffers: shared hit=8471
  • Worker 1: actual time=0.005..0.005 rows=1 loops=2915
  • Buffers: shared hit=11694
121. 28.143 28.143 ↑ 5.0 1 531

Index Scan using uix2tsuseridstartdate on "2f766932716d4761981a2698126f0f51".timesheet ts_8 (cost=0.29..1.13 rows=5 width=28) (actual time=0.053..0.053 rows=1 loops=531)

  • Output: ts_8.id, ts_8.userid, ts_8.startdate, ts_8.enddate, ts_8.approvalstatus, ts_8.duedate, ts_8.autosubmitdatetimeutc, ts_8.lastautosubmitattemptdatetimeutc, ts_8.createdonutc
  • Index Cond: ((ts_8.userid = rev_5.userid) AND (rev_5.entrydate >= ts_8.startdate))
  • Filter: (rev_5.entrydate <= ts_8.enddate)
  • Rows Removed by Filter: 53
  • Buffers: shared hit=5649
122. 3.186 3.186 ↑ 1.0 1 531

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue effectiveuser_5 (cost=0.56..2.57 rows=1 width=78) (actual time=0.005..0.006 rows=1 loops=531)

  • Output: effectiveuser_5.id, effectiveuser_5.revisionauditid, effectiveuser_5.keyuri, effectiveuser_5.parentid, effectiveuser_5.index, effectiveuser_5.uri, effectiveuser_5.slug, effectiveuser_5."boolean", effectiveuser_5.date, effectiveuser_5.number, effectiveuser_5.text, effectiveuser_5."time", effectiveuser_5.timespan, effectiveuser_5.daterange_startdate, effectiveuser_5.daterange_enddate, effectiveuser_5.daterange_relativedaterangeuri, effectiveuser_5.daterange_relativedaterangeasofdate, effectiveuser_5.workdayduration_decimalworkdays, effectiveuser_5.workdayduration_workdays, effectiveuser_5.workdayduration_hours, effectiveuser_5.workdayduration_minutes
  • Index Cond: ((effectiveuser_5.revisionauditid = rev_5.closingauditid) AND (upper(effectiveuser_5.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:EFFECTIVE-USER'::text))
  • Buffers: shared hit=2660
123. 1.593 1.593 ↑ 1.0 1 531

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue actualuser_5 (cost=0.56..2.57 rows=1 width=16) (actual time=0.003..0.003 rows=1 loops=531)

  • Output: actualuser_5.id, actualuser_5.revisionauditid, actualuser_5.keyuri, actualuser_5.parentid, actualuser_5.index, actualuser_5.uri, actualuser_5.slug, actualuser_5."boolean", actualuser_5.date, actualuser_5.number, actualuser_5.text, actualuser_5."time", actualuser_5.timespan, actualuser_5.daterange_startdate, actualuser_5.daterange_enddate, actualuser_5.daterange_relativedaterangeuri, actualuser_5.daterange_relativedaterangeasofdate, actualuser_5.workdayduration_decimalworkdays, actualuser_5.workdayduration_workdays, actualuser_5.workdayduration_hours, actualuser_5.workdayduration_minutes
  • Index Cond: ((actualuser_5.revisionauditid = rev_5.closingauditid) AND (upper(actualuser_5.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:ACTUAL-USER'::text))
  • Buffers: shared hit=2655
124. 2.124 2.124 ↓ 0.0 0 531

Index Scan using uix4rakv_uniquekeyuri on "2f766932716d4761981a2698126f0f51".revisionauditkeyvalue changereason_1 (cost=0.56..2.57 rows=1 width=16) (actual time=0.004..0.004 rows=0 loops=531)

  • Output: changereason_1.id, changereason_1.revisionauditid, changereason_1.keyuri, changereason_1.parentid, changereason_1.index, changereason_1.uri, changereason_1.slug, changereason_1."boolean", changereason_1.date, changereason_1.number, changereason_1.text, changereason_1."time", changereason_1.timespan, changereason_1.daterange_startdate, changereason_1.daterange_enddate, changereason_1.daterange_relativedaterangeuri, changereason_1.daterange_relativedaterangeasofdate, changereason_1.workdayduration_decimalworkdays, changereason_1.workdayduration_workdays, changereason_1.workdayduration_hours, changereason_1.workdayduration_minutes
  • Index Cond: ((changereason_1.revisionauditid = rev_5.closingauditid) AND (upper(changereason_1.keyuri) = 'URN:REPLICON:REVISION-AUDIT-KEY:COMMENT'::text))
  • Buffers: shared hit=2124
125. 0.085 629.761 ↓ 554.0 554 1

Subquery Scan on *SELECT* 9 (cost=30,959.34..44,277.75 rows=1 width=119) (actual time=427.664..629.761 rows=554 loops=1)

  • Output: "*SELECT* 9".entrydate, "*SELECT* 9".modifiedonutc, "*SELECT* 9".action, "*SELECT* 9".validuntilutc, "*SELECT* 9".modifiedbyuserid, "*SELECT* 9".modifiedbyuseruri, "*SELECT* 9".timesheetid, "*SELECT* 9".userid
  • Buffers: shared hit=30353
126. 0.448 629.676 ↓ 554.0 554 1

Nested Loop Left Join (cost=30,959.34..44,277.74 rows=1 width=387) (actual time=427.663..629.676 rows=554 loops=1)

  • Output: tah.timesheetid, ts_9.userid, NULL::date, NULL::date, NULL::text, tah.action, NULL::uuid, NULL::date, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, kv_ea.uri, NULL::integer, NULL::text, NULL::text, tah.timestamputc, NULL::timestamp without time zone, NULL::text
  • Buffers: shared hit=30353
127. 0.634 611.500 ↓ 554.0 554 1

Nested Loop Left Join (cost=30,958.91..44,246.64 rows=1 width=119) (actual time=427.653..611.500 rows=554 loops=1)

  • Output: tah.timesheetid, tah.action, tah.timestamputc, tah.id, ts_9.userid, kv_ea.uri
  • Buffers: shared hit=27638
128. 0.415 590.922 ↓ 554.0 554 1

Nested Loop (cost=30,958.48..44,215.55 rows=1 width=48) (actual time=427.637..590.922 rows=554 loops=1)

  • Output: tah.timesheetid, tah.action, tah.timestamputc, tah.id, ts_9.userid
  • Buffers: shared hit=24923
129. 0.172 561.699 ↓ 554.0 554 1

Nested Loop (cost=30,958.05..44,212.53 rows=1 width=64) (actual time=427.566..561.699 rows=554 loops=1)

  • Output: tah.timesheetid, tah.action, tah.timestamputc, tah.id, ts_9.userid, ts_9.id
  • Inner Unique: true
  • Buffers: shared hit=21664
130. 132.260 559.311 ↓ 554.0 554 1

Index Scan using ixtahaction on "2f766932716d4761981a2698126f0f51".timesheetapprovalhistory tah (cost=30,957.63..44,210.10 rows=1 width=44) (actual time=427.549..559.311 rows=554 loops=1)

  • Output: tah.id, tah.serialnumber, tah.timesheetid, tah.action, tah.approvalcomments, tah.timestamputc, tah.approvalagenttype, tah.userid, tah.systemprocessidentifier
  • Index Cond: (tah.action = ANY ('{1,2,3,4,6,100,101,102}'::integer[]))
  • Filter: ((NOT (hashed SubPlan 5)) AND (tah.timestamputc >= '2020-03-18 04:00:00'::timestamp without time zone) AND (tah.timestamputc < '2020-03-19 04:00:00'::timestamp without time zone) AND (COALESCE(upper(tah.systemprocessidentifier), ''::text) <> 'URN:REPLICON:APPROVAL-SYSTEM-PROCESS:TIMESHEET-SUBMIT-SCRIPT-DATA-AND-VALIDATION'::text))
  • Rows Removed by Filter: 327561
  • Buffers: shared hit=19448
131.          

SubPlan (for Index Scan)

132. 0.287 427.051 ↓ 1,104.0 1,104 1

Nested Loop (cost=30,677.31..30,957.20 rows=1 width=16) (actual time=355.470..427.051 rows=1,104 loops=1)

  • Output: tah_1.id
  • Buffers: shared hit=8477
133. 12.846 424.004 ↓ 552.0 552 1

Hash Join (cost=30,676.89..30,954.74 rows=1 width=24) (actual time=355.449..424.004 rows=552 loops=1)

  • Output: faas.timesheetid, faas.submission_serialnumber, faas.nextaction_serialnumber
  • Inner Unique: true
  • Hash Cond: ((faas.timesheetid = tah_2.timesheetid) AND (faas.nextaction_serialnumber = tah_2.serialnumber))
  • Buffers: shared hit=6181
134.          

CTE firstactionaftersubmit

135. 100.457 379.459 ↓ 10.0 109,680 1

HashAggregate (cost=28,654.14..28,764.18 rows=11,004 width=24) (actual time=350.993..379.459 rows=109,680 loops=1)

  • Output: submissions.timesheetid, submissions.serialnumber, min(tah_3.serialnumber)
  • Group Key: submissions.timesheetid, submissions.serialnumber
  • Buffers: shared hit=6141
136.          

CTE submissions

137. 43.509 43.509 ↑ 1.0 109,680 1

Index Scan using ixtahaction on "2f766932716d4761981a2698126f0f51".timesheetapprovalhistory (cost=0.42..6,773.79 rows=110,041 width=20) (actual time=0.026..43.509 rows=109,680 loops=1)

  • Output: timesheetapprovalhistory.timesheetid, timesheetapprovalhistory.serialnumber
  • Index Cond: (timesheetapprovalhistory.action = 1)
  • Buffers: shared hit=3947
138. 93.664 279.002 ↓ 2.1 250,546 1

Hash Join (cost=11,369.04..20,976.70 rows=120,487 width=24) (actual time=114.923..279.002 rows=250,546 loops=1)

  • Output: submissions.timesheetid, submissions.serialnumber, tah_3.serialnumber
  • Hash Cond: (submissions.timesheetid = tah_3.timesheetid)
  • Join Filter: (tah_3.serialnumber > submissions.serialnumber)
  • Rows Removed by Join Filter: 141744
  • Buffers: shared hit=6141
139. 72.262 72.262 ↑ 1.0 109,680 1

CTE Scan on submissions (cost=0.00..2,200.82 rows=110,041 width=20) (actual time=0.030..72.262 rows=109,680 loops=1)

  • Output: submissions.timesheetid, submissions.serialnumber
  • Buffers: shared hit=3947
140. 56.179 113.076 ↑ 1.0 328,115 1

Hash (cost=7,256.94..7,256.94 rows=328,968 width=20) (actual time=113.076..113.076 rows=328,115 loops=1)

  • Output: tah_3.serialnumber, tah_3.timesheetid
  • Buckets: 524288 Batches: 1 Memory Usage: 20759kB
  • Buffers: shared hit=2194
141. 56.897 56.897 ↑ 1.0 328,115 1

Index Only Scan using ixtah2timesheetid on "2f766932716d4761981a2698126f0f51".timesheetapprovalhistory tah_3 (cost=0.42..7,256.94 rows=328,968 width=20) (actual time=0.077..56.897 rows=328,115 loops=1)

  • Output: tah_3.serialnumber, tah_3.timesheetid
  • Heap Fetches: 16344
  • Buffers: shared hit=2194
142. 406.918 406.918 ↓ 10.0 109,680 1

CTE Scan on firstactionaftersubmit faas (cost=0.00..220.08 rows=11,004 width=24) (actual time=350.995..406.918 rows=109,680 loops=1)

  • Output: faas.timesheetid, faas.submission_serialnumber, faas.nextaction_serialnumber
  • Buffers: shared hit=6141
143. 0.086 4.240 ↓ 34.6 554 1

Hash (cost=1,912.47..1,912.47 rows=16 width=20) (actual time=4.240..4.240 rows=554 loops=1)

  • Output: tah_2.timesheetid, tah_2.serialnumber
  • Buckets: 1024 Batches: 1 Memory Usage: 37kB
  • Buffers: shared hit=40
144. 4.154 4.154 ↓ 34.6 554 1

Index Scan using ixtahaction on "2f766932716d4761981a2698126f0f51".timesheetapprovalhistory tah_2 (cost=0.42..1,912.47 rows=16 width=20) (actual time=0.048..4.154 rows=554 loops=1)

  • Output: tah_2.timesheetid, tah_2.serialnumber
  • Index Cond: (tah_2.action = 3)
  • Filter: (upper(tah_2.systemprocessidentifier) = 'URN:REPLICON:APPROVAL-SYSTEM-PROCESS:TIMESHEET-SUBMIT-SCRIPT-DATA-AND-VALIDATION'::text)
  • Rows Removed by Filter: 2677
  • Buffers: shared hit=40
145. 2.760 2.760 ↓ 2.0 2 552

Index Scan using ixtah2timesheetid on "2f766932716d4761981a2698126f0f51".timesheetapprovalhistory tah_1 (cost=0.42..2.44 rows=1 width=36) (actual time=0.004..0.005 rows=2 loops=552)

  • Output: tah_1.id, tah_1.serialnumber, tah_1.timesheetid, tah_1.action, tah_1.approvalcomments, tah_1.timestamputc, tah_1.approvalagenttype, tah_1.userid, tah_1.systemprocessidentifier
  • Index Cond: ((tah_1.timesheetid = faas.timesheetid) AND (tah_1.serialnumber >= faas.submission_serialnumber) AND (tah_1.serialnumber <= faas.nextaction_serialnumber))
  • Buffers: shared hit=2296
146. 2.216 2.216 ↑ 1.0 1 554

Index Scan using timesheet_pkey on "2f766932716d4761981a2698126f0f51".timesheet ts_9 (cost=0.42..2.44 rows=1 width=20) (actual time=0.004..0.004 rows=1 loops=554)

  • Output: ts_9.id, ts_9.userid, ts_9.startdate, ts_9.enddate, ts_9.approvalstatus, ts_9.duedate, ts_9.autosubmitdatetimeutc, ts_9.lastautosubmitattemptdatetimeutc, ts_9.createdonutc
  • Index Cond: (ts_9.id = tah.timesheetid)
  • Buffers: shared hit=2216
147. 28.808 28.808 ↑ 1.0 1 554

Index Scan using ixtpsstimesheetid on "2f766932716d4761981a2698126f0f51".timesheetpolicysettingssnapshot tsformat_1 (cost=0.43..3.00 rows=1 width=16) (actual time=0.050..0.052 rows=1 loops=554)

  • Output: tsformat_1.id, tsformat_1.timesheetid, tsformat_1.parentid, tsformat_1.index, tsformat_1.key, tsformat_1.uri, tsformat_1.slug, tsformat_1."boolean", tsformat_1.date, tsformat_1.number, tsformat_1.text, tsformat_1."time", tsformat_1.timespan, tsformat_1.daterange_startdate, tsformat_1.daterange_enddate, tsformat_1.daterange_relativedaterangeuri, tsformat_1.daterange_relativedaterangeasofdate, tsformat_1.workdayduration_decimalworkdays, tsformat_1.workdayduration_workdays, tsformat_1.workdayduration_hours, tsformat_1.workdayduration_minutes
  • Index Cond: (tsformat_1.timesheetid = ts_9.id)
  • Filter: (upper(tsformat_1.key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text)
  • Rows Removed by Filter: 48
  • Buffers: shared hit=3259
148. 19.944 19.944 ↑ 1.0 1 554

Index Scan using ixtahkvtimesheetapprovalhistoryid on "2f766932716d4761981a2698126f0f51".timesheetapprovalhistorykeyvalue kv_ea (cost=0.43..31.08 rows=1 width=87) (actual time=0.036..0.036 rows=1 loops=554)

  • Output: kv_ea.id, kv_ea.timesheetapprovalhistoryid, kv_ea.parentid, kv_ea.index, kv_ea.key, kv_ea.uri, kv_ea.slug, kv_ea."boolean", kv_ea.date, kv_ea.number, kv_ea.text, kv_ea."time", kv_ea.timespan, kv_ea.daterange_startdate, kv_ea.daterange_enddate, kv_ea.daterange_relativedaterangeuri, kv_ea.daterange_relativedaterangeasofdate, kv_ea.workdayduration_decimalworkdays, kv_ea.workdayduration_workdays, kv_ea.workdayduration_hours, kv_ea.workdayduration_minutes
  • Index Cond: (kv_ea.timesheetapprovalhistoryid = tah.id)
  • Filter: (upper(kv_ea.key) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:ACTING-EFFECTIVE-USER'::text)
  • Rows Removed by Filter: 27
  • Buffers: shared hit=2715
149. 17.728 17.728 ↑ 1.0 1 554

Index Scan using ixtahkvtimesheetapprovalhistoryid on "2f766932716d4761981a2698126f0f51".timesheetapprovalhistorykeyvalue kv_aa (cost=0.43..31.08 rows=1 width=16) (actual time=0.031..0.032 rows=1 loops=554)

  • Output: kv_aa.id, kv_aa.timesheetapprovalhistoryid, kv_aa.parentid, kv_aa.index, kv_aa.key, kv_aa.uri, kv_aa.slug, kv_aa."boolean", kv_aa.date, kv_aa.number, kv_aa.text, kv_aa."time", kv_aa.timespan, kv_aa.daterange_startdate, kv_aa.daterange_enddate, kv_aa.daterange_relativedaterangeuri, kv_aa.daterange_relativedaterangeasofdate, kv_aa.workdayduration_decimalworkdays, kv_aa.workdayduration_workdays, kv_aa.workdayduration_hours, kv_aa.workdayduration_minutes
  • Index Cond: (kv_aa.timesheetapprovalhistoryid = tah.id)
  • Filter: (upper(kv_aa.key) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:ACTING-ACTUAL-USER'::text)
  • Rows Removed by Filter: 27
  • Buffers: shared hit=2715
150. 138.932 138.932 ↑ 1.0 1 34,733

Index Only Scan using dm_timesheetlist_facts_pkey on "2f766932716d4761981a2698126f0f51".dm_timesheetlist_facts tslist (cost=0.42..1.36 rows=1 width=16) (actual time=0.004..0.004 rows=1 loops=34,733)

  • Output: tslist.timesheetid
  • Index Cond: (tslist.timesheetid = "*SELECT* 1".timesheetid)
  • Heap Fetches: 18157
  • Buffers: shared hit=133867 read=16
151. 69.466 69.466 ↑ 1.0 1 34,733

Index Scan using timesheet_pkey on "2f766932716d4761981a2698126f0f51".timesheet ts (cost=0.42..0.45 rows=1 width=24) (actual time=0.002..0.002 rows=1 loops=34,733)

  • Output: ts.id, ts.userid, ts.startdate, ts.enddate, ts.approvalstatus, ts.duedate, ts.autosubmitdatetimeutc, ts.lastautosubmitattemptdatetimeutc, ts.createdonutc
  • Index Cond: (ts.id = tslist.timesheetid)
  • Buffers: shared hit=138932
152. 34.733 34.733 ↑ 1.0 1 34,733

Index Scan using userinfo_pkey on "2f766932716d4761981a2698126f0f51".userinfo ui (cost=0.28..0.38 rows=1 width=17) (actual time=0.001..0.001 rows=1 loops=34,733)

  • 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.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.displayname, ui.issampleuser, ui.defaultactivityid, ui.guidid
  • Index Cond: (ui.id = "*SELECT* 1".userid)
  • Buffers: shared hit=104360
Planning time : 275.125 ms
Execution time : 38,495.945 ms