explain.depesz.com

PostgreSQL's explain analyze made readable

Result: dsuV

Settings
# exclusive inclusive rows x rows loops node
1. 344,682.652 4,584,650.343 ↓ 303.5 48,056,817 1

Sort (cost=2,173,174.54..2,173,570.41 rows=158,350 width=564) (actual time=4,532,621.815..4,584,650.343 rows=48,056,817 loops=1)

  • Output: ts.startdate, ts.enddate, ((ui.lastname)::character varying(50)), ((ui.firstname)::character varying(50)), ((ui.displayname)::text), "*SELECT* 1".action, "*SELECT* 1".modifiedbyuserid, (("*SELECT* 1".modifiedbyuseruri)::text), "*SELECT* 1".modifiedbyactualuserid, (("*SELECT* 1".modifiedbyactualuseruri)::text), "*SELECT* 1".modifiedonutc, "*SELECT* 1".validuntilutc, "*SELECT* 1".entrydate, (("*SELECT* 1".timesheetformaturi)::text), "*SELECT* 1".entryid, "*SELECT* 1".mostrecentrevisionid, "*SELECT* 1".revisionid, "*SELECT* 1".previousrevisionid, "*SELECT* 1".metadatarevisionid, "*SELECT* 1".metadatapreviousrevisionid, "*SELECT* 1".objectextensionfieldvaluerevisionid, "*SELECT* 1".objectextensionfieldvaluepreviousrevisionid, (("*SELECT* 1".approvalcomments)::text)
  • Sort Key: ts.startdate, ts.enddate, ((ui.lastname)::character varying(50)) COLLATE "en_US", ((ui.firstname)::character varying(50)) COLLATE "en_US", ((ui.displayname)::text) COLLATE "en_US", "*SELECT* 1".action, "*SELECT* 1".modifiedonutc, "*SELECT* 1".validuntilutc, "*SELECT* 1".entrydate
  • Sort Method: external merge Disk: 14,182,168kB
  • Buffers: shared hit=1,361,809,354 read=3,012,583, temp read=2,910,222 written=2,910,231
2. 17,931.747 4,239,967.691 ↓ 303.5 48,056,817 1

Hash Join (cost=2,617.62..2,159,498.83 rows=158,350 width=564) (actual time=1,547.414..4,239,967.691 rows=48,056,817 loops=1)

  • Output: ts.startdate, ts.enddate, ui.lastname, ui.firstname, ui.displayname, "*SELECT* 1".action, "*SELECT* 1".modifiedbyuserid, "*SELECT* 1".modifiedbyuseruri, "*SELECT* 1".modifiedbyactualuserid, "*SELECT* 1".modifiedbyactualuseruri, "*SELECT* 1".modifiedonutc, "*SELECT* 1".validuntilutc, "*SELECT* 1".entrydate, "*SELECT* 1".timesheetformaturi, "*SELECT* 1".entryid, "*SELECT* 1".mostrecentrevisionid, "*SELECT* 1".revisionid, "*SELECT* 1".previousrevisionid, "*SELECT* 1".metadatarevisionid, "*SELECT* 1".metadatapreviousrevisionid, "*SELECT* 1".objectextensionfieldvaluerevisionid, "*SELECT* 1".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 1".approvalcomments
  • Inner Unique: true
  • Hash Cond: ("*SELECT* 1".userid = ui.id)
  • Buffers: shared hit=1,361,809,342 read=3,012,583, temp read=1,137,451 written=1,137,367
3. 15,025.334 4,222,017.618 ↓ 303.5 48,056,817 1

Hash Join (cost=2,544.11..2,159,007.62 rows=158,350 width=363) (actual time=1,529.076..4,222,017.618 rows=48,056,817 loops=1)

  • Output: "*SELECT* 1".action, "*SELECT* 1".modifiedbyuserid, "*SELECT* 1".modifiedbyuseruri, "*SELECT* 1".modifiedbyactualuserid, "*SELECT* 1".modifiedbyactualuseruri, "*SELECT* 1".modifiedonutc, "*SELECT* 1".validuntilutc, "*SELECT* 1".entrydate, "*SELECT* 1".timesheetformaturi, "*SELECT* 1".entryid, "*SELECT* 1".mostrecentrevisionid, "*SELECT* 1".revisionid, "*SELECT* 1".previousrevisionid, "*SELECT* 1".metadatarevisionid, "*SELECT* 1".metadatapreviousrevisionid, "*SELECT* 1".objectextensionfieldvaluerevisionid, "*SELECT* 1".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 1".approvalcomments, "*SELECT* 1".userid, ts.startdate, ts.enddate
  • Inner Unique: true
  • Hash Cond: (ts.id = tslist.timesheetid)
  • Buffers: shared hit=1,361,809,342 read=3,012,529, temp read=1,137,451 written=1,137,367
4. 18,079.876 4,206,939.427 ↓ 303.5 48,056,817 1

Hash Join (cost=690.47..2,156,738.22 rows=158,350 width=395) (actual time=1,476.086..4,206,939.427 rows=48,056,817 loops=1)

  • Output: "*SELECT* 1".action, "*SELECT* 1".modifiedbyuserid, "*SELECT* 1".modifiedbyuseruri, "*SELECT* 1".modifiedbyactualuserid, "*SELECT* 1".modifiedbyactualuseruri, "*SELECT* 1".modifiedonutc, "*SELECT* 1".validuntilutc, "*SELECT* 1".entrydate, "*SELECT* 1".timesheetformaturi, "*SELECT* 1".entryid, "*SELECT* 1".mostrecentrevisionid, "*SELECT* 1".revisionid, "*SELECT* 1".previousrevisionid, "*SELECT* 1".metadatarevisionid, "*SELECT* 1".metadatapreviousrevisionid, "*SELECT* 1".objectextensionfieldvaluerevisionid, "*SELECT* 1".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 1".approvalcomments, "*SELECT* 1".timesheetid, "*SELECT* 1".userid, ts.startdate, ts.enddate, ts.id
  • Inner Unique: true
  • Hash Cond: ("*SELECT* 1".timesheetid = ts.id)
  • Buffers: shared hit=1,361,809,340 read=3,011,150, temp read=1,137,451 written=1,137,367
5. 6,689.629 4,188,784.671 ↓ 303.5 48,056,817 1

Append (cost=0.84..2,155,632.83 rows=158,350 width=370) (actual time=1,401.071..4,188,784.671 rows=48,056,817 loops=1)

  • Buffers: shared hit=1,361,809,335 read=3,010,938, temp read=1,137,451 written=1,137,367
6. 0.000 0.006 ↓ 0.0 0 1

Subquery Scan on *SELECT* 1 (cost=0.84..20.47 rows=1 width=355) (actual time=0.006..0.006 rows=0 loops=1)

  • Output: "*SELECT* 1".action, "*SELECT* 1".modifiedbyuserid, "*SELECT* 1".modifiedbyuseruri, "*SELECT* 1".modifiedbyactualuserid, "*SELECT* 1".modifiedbyactualuseruri, "*SELECT* 1".modifiedonutc, "*SELECT* 1".validuntilutc, "*SELECT* 1".entrydate, "*SELECT* 1".timesheetformaturi, "*SELECT* 1".entryid, "*SELECT* 1".mostrecentrevisionid, "*SELECT* 1".revisionid, "*SELECT* 1".previousrevisionid, "*SELECT* 1".metadatarevisionid, "*SELECT* 1".metadatapreviousrevisionid, "*SELECT* 1".objectextensionfieldvaluerevisionid, "*SELECT* 1".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 1".approvalcomments, "*SELECT* 1".timesheetid, "*SELECT* 1".userid
7. 0.001 0.006 ↓ 0.0 0 1

Nested Loop (cost=0.84..20.46 rows=1 width=395) (actual time=0.005..0.006 rows=0 loops=1)

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

Nested Loop (cost=0.41..16.88 rows=1 width=112) (actual time=0.005..0.005 rows=0 loops=1)

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

Nested Loop (cost=0.12..12.45 rows=1 width=96) (actual time=0.004..0.004 rows=0 loops=1)

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

Seq Scan on "CBRE_sanitized_761".allocatedtime at (cost=0.00..10.30 rows=1 width=80) (actual time=0.004..0.004 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-01-01 06:00:00'::timestamp without time zone) AND (at.fromtimestamputc < '2020-09-04 05:00:00'::timestamp without time zone))
11. 0.000 0.000 ↓ 0.0 0

Index Scan using ixallocatedtimerootid on "CBRE_sanitized_761".allocatedtime (cost=0.12..2.14 rows=1 width=32) (never executed)

  • Output: allocatedtime.id, allocatedtime.rootid, allocatedtime.parentid, allocatedtime.inouttimesheetentryid, allocatedtime.userid, allocatedtime.openinguserid, allocatedtime.openingactualuserid, allocatedtime.closinguserid, allocatedtime.closingactualuserid, allocatedtime.entrydate, allocatedtime.duration, allocatedtime.workdayduration, allocatedtime.comments, allocatedtime.openingreason, allocatedtime.closingreason, allocatedtime.projectid, allocatedtime.taskid, allocatedtime.activityid, allocatedtime.billingrateid, allocatedtime.breaktypeid, allocatedtime.info1, allocatedtime.info2, allocatedtime.info3, allocatedtime.info4, allocatedtime.info5, allocatedtime.fromtimestamputc, allocatedtime.totimestamputc
12. 0.000 0.000 ↓ 0.0 0

Index Scan using ixtsuseridstartdateenddate on "CBRE_sanitized_761".timesheet ts_1 (cost=0.29..4.40 rows=3 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 "CBRE_sanitized_761".timesheetpolicysettingssnapshot tsformat (cost=0.43..3.56 rows=1 width=95) (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.001 0.003 ↓ 0.0 0 1

Subquery Scan on *SELECT* 2 (cost=0.42..16.91 rows=1 width=308) (actual time=0.002..0.003 rows=0 loops=1)

  • Output: "*SELECT* 2".action, "*SELECT* 2".modifiedbyuserid, "*SELECT* 2".modifiedbyuseruri, "*SELECT* 2".modifiedbyactualuserid, "*SELECT* 2".modifiedbyactualuseruri, "*SELECT* 2".modifiedonutc, "*SELECT* 2".validuntilutc, "*SELECT* 2".entrydate, "*SELECT* 2".timesheetformaturi, "*SELECT* 2".entryid, "*SELECT* 2".mostrecentrevisionid, "*SELECT* 2".revisionid, "*SELECT* 2".previousrevisionid, "*SELECT* 2".metadatarevisionid, "*SELECT* 2".metadatapreviousrevisionid, "*SELECT* 2".objectextensionfieldvaluerevisionid, "*SELECT* 2".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 2".approvalcomments, "*SELECT* 2".timesheetid, "*SELECT* 2".userid
15. 0.001 0.002 ↓ 0.0 0 1

Nested Loop (cost=0.42..16.90 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, 'urn:replicon:policy:timesheet:timesheet-format:standard-timesheet'::text, 102, at_1.rootid, at_1.entrydate, at_1.id, at_1.id, at_1.id, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, at_1.closinguserid, NULL::text, at_1.closingactualuserid, NULL::text, NULL::text, at_1.totimestamputc, NULL::timestamp without time zone, NULL::text
16. 0.000 0.001 ↓ 0.0 0 1

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

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

Seq Scan on "CBRE_sanitized_761".allocatedtime at_1 (cost=0.00..10.30 rows=1 width=56) (actual time=0.001..0.001 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-01-01 06:00:00'::timestamp without time zone) AND (at_1.totimestamputc < '2020-09-04 05:00:00'::timestamp without time zone))
18. 0.000 0.000 ↓ 0.0 0

Index Scan using uixallocatedtime_parent on "CBRE_sanitized_761".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)
19. 0.000 0.000 ↓ 0.0 0

Index Scan using ixtsuseridstartdateenddate on "CBRE_sanitized_761".timesheet ts_2 (cost=0.29..4.40 rows=3 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))
20. 2,691.977 1,367,336.614 ↓ 238.6 12,403,235 1

Subquery Scan on *SELECT* 3 (cost=33.99..126,638.68 rows=51,977 width=366) (actual time=1,401.061..1,367,336.614 rows=12,403,235 loops=1)

  • Output: "*SELECT* 3".action, "*SELECT* 3".modifiedbyuserid, "*SELECT* 3".modifiedbyuseruri, "*SELECT* 3".modifiedbyactualuserid, "*SELECT* 3".modifiedbyactualuseruri, "*SELECT* 3".modifiedonutc, "*SELECT* 3".validuntilutc, "*SELECT* 3".entrydate, "*SELECT* 3".timesheetformaturi, "*SELECT* 3".entryid, "*SELECT* 3".mostrecentrevisionid, "*SELECT* 3".revisionid, "*SELECT* 3".previousrevisionid, "*SELECT* 3".metadatarevisionid, "*SELECT* 3".metadatapreviousrevisionid, "*SELECT* 3".objectextensionfieldvaluerevisionid, "*SELECT* 3".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 3".approvalcomments, "*SELECT* 3".timesheetid, "*SELECT* 3".userid
  • Buffers: shared hit=211,508,259 read=1,223,983
21. 9,396.408 1,364,644.637 ↓ 238.6 12,403,235 1

Nested Loop Left Join (cost=33.99..126,118.91 rows=51,977 width=406) (actual time=1,401.059..1,364,644.637 rows=12,403,235 loops=1)

  • Output: ts_3.id, ts_3.userid, NULL::date, NULL::date, 'urn:replicon:policy:timesheet:timesheet-format:gen4-timesheet'::text, CASE WHEN (rev.previousrevisionid IS NULL) THEN 100 ELSE 101 END, rev.timeentryid, rev.entrydate, NULL::uuid, rev.id, rev.previousrevisionid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser.uri, NULL::integer, actualuser.uri, NULL::text, rev.fromtimestamputc, rev.totimestamputc, NULL::text
  • Buffers: shared hit=211,508,259 read=1,223,983
22. 13,973.981 1,305,635.289 ↓ 238.6 12,403,235 1

Nested Loop Left Join (cost=33.30..84,862.40 rows=51,977 width=226) (actual time=1,401.046..1,305,635.289 rows=12,403,235 loops=1)

  • Output: ts_3.id, ts_3.userid, rev.previousrevisionid, rev.timeentryid, rev.entrydate, rev.id, rev.fromtimestamputc, rev.totimestamputc, rev.openingauditid, effectiveuser.uri, actualuser.uri
  • Buffers: shared hit=149,299,872 read=1,223,983
23. 7,532.520 1,204,838.663 ↓ 238.6 12,403,235 1

Nested Loop Left Join (cost=32.61..43,605.89 rows=51,977 width=165) (actual time=1,401.025..1,204,838.663 rows=12,403,235 loops=1)

  • Output: ts_3.id, ts_3.userid, rev.previousrevisionid, rev.timeentryid, rev.entrydate, rev.id, rev.fromtimestamputc, rev.totimestamputc, rev.openingauditid, effectiveuser.uri
  • Buffers: shared hit=74,461,415 read=1,182,442
24. 3,076.649 81,014.993 ↓ 238.6 12,403,235 1

Nested Loop (cost=31.93..2,349.38 rows=51,977 width=104) (actual time=1,396.969..81,014.993 rows=12,403,235 loops=1)

  • Output: ts_3.id, ts_3.userid, rev.previousrevisionid, rev.timeentryid, rev.entrydate, rev.id, rev.fromtimestamputc, rev.totimestamputc, rev.openingauditid
  • Buffers: shared hit=421,820 read=283,958
25. 86.308 1,728.576 ↓ 724.3 21,006 1

Nested Loop (cost=31.49..93.35 rows=29 width=28) (actual time=1,393.477..1,728.576 rows=21,006 loops=1)

  • Output: ts_3.id, ts_3.userid, ts_3.startdate, ts_3.enddate
  • Inner Unique: true
  • Buffers: shared hit=63,099 read=20,177
26. 51.463 1,432.208 ↓ 724.3 21,006 1

HashAggregate (cost=31.20..31.49 rows=29 width=16) (actual time=1,391.670..1,432.208 rows=21,006 loops=1)

  • Output: timesheetpolicysettingssnapshot.timesheetid
  • Group Key: timesheetpolicysettingssnapshot.timesheetid
  • Buffers: shared hit=1 read=20,097
27. 1,380.745 1,380.745 ↓ 724.3 21,006 1

Index Scan using ixtspss2key on "CBRE_sanitized_761".timesheetpolicysettingssnapshot (cost=0.55..31.13 rows=29 width=16) (actual time=7.115..1,380.745 rows=21,006 loops=1)

  • Output: timesheetpolicysettingssnapshot.id, timesheetpolicysettingssnapshot.timesheetid, timesheetpolicysettingssnapshot.parentid, timesheetpolicysettingssnapshot.index, timesheetpolicysettingssnapshot.key, timesheetpolicysettingssnapshot.uri, timesheetpolicysettingssnapshot.slug, timesheetpolicysettingssnapshot."boolean", timesheetpolicysettingssnapshot.date, timesheetpolicysettingssnapshot.number, timesheetpolicysettingssnapshot.text, timesheetpolicysettingssnapshot."time", timesheetpolicysettingssnapshot.timespan, timesheetpolicysettingssnapshot.daterange_startdate, timesheetpolicysettingssnapshot.daterange_enddate, timesheetpolicysettingssnapshot.daterange_relativedaterangeuri, timesheetpolicysettingssnapshot.daterange_relativedaterangeasofdate, timesheetpolicysettingssnapshot.workdayduration_decimalworkdays, timesheetpolicysettingssnapshot.workdayduration_workdays, timesheetpolicysettingssnapshot.workdayduration_hours, timesheetpolicysettingssnapshot.workdayduration_minutes
  • 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=1 read=20,097
28. 210.060 210.060 ↑ 1.0 1 21,006

Index Scan using timesheet_pkey on "CBRE_sanitized_761".timesheet ts_3 (cost=0.29..2.13 rows=1 width=28) (actual time=0.010..0.010 rows=1 loops=21,006)

  • 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.id = timesheetpolicysettingssnapshot.timesheetid)
  • Buffers: shared hit=63,098 read=80
29. 76,209.768 76,209.768 ↑ 2.9 590 21,006

Index Scan using ixter2userid on "CBRE_sanitized_761".timeentryrevision rev (cost=0.43..60.51 rows=1,728 width=88) (actual time=0.479..3.628 rows=590 loops=21,006)

  • 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, rev.approvalstatus
  • Index Cond: ((rev.userid = ts_3.userid) AND (rev.entrydate >= ts_3.startdate) AND (rev.entrydate <= ts_3.enddate))
  • Filter: ((rev.fromtimestamputc >= '2020-01-01 06:00:00'::timestamp without time zone) AND (rev.fromtimestamputc < '2020-09-04 05:00:00'::timestamp without time zone))
  • Buffers: shared hit=358,721 read=263,781
30. 1,116,291.150 1,116,291.150 ↑ 1.0 1 12,403,235

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue effectiveuser (cost=0.69..0.78 rows=1 width=77) (actual time=0.089..0.090 rows=1 loops=12,403,235)

  • 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=74,039,595 read=898,484
31. 86,822.645 86,822.645 ↑ 1.0 1 12,403,235

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue actualuser (cost=0.69..0.78 rows=1 width=77) (actual time=0.007..0.007 rows=1 loops=12,403,235)

  • 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=74,838,457 read=41,541
32. 49,612.940 49,612.940 ↓ 0.0 0 12,403,235

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue changereason (cost=0.69..0.78 rows=1 width=16) (actual time=0.004..0.004 rows=0 loops=12,403,235)

  • 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=62,208,387
33. 7,180.994 2,183,654.271 ↓ 6,736.6 35,238,930 1

Subquery Scan on *SELECT* 4 (cost=34.30..212,581.72 rows=5,231 width=366) (actual time=46.364..2,183,654.271 rows=35,238,930 loops=1)

  • Output: "*SELECT* 4".action, "*SELECT* 4".modifiedbyuserid, "*SELECT* 4".modifiedbyuseruri, "*SELECT* 4".modifiedbyactualuserid, "*SELECT* 4".modifiedbyactualuseruri, "*SELECT* 4".modifiedonutc, "*SELECT* 4".validuntilutc, "*SELECT* 4".entrydate, "*SELECT* 4".timesheetformaturi, "*SELECT* 4".entryid, "*SELECT* 4".mostrecentrevisionid, "*SELECT* 4".revisionid, "*SELECT* 4".previousrevisionid, "*SELECT* 4".metadatarevisionid, "*SELECT* 4".metadatapreviousrevisionid, "*SELECT* 4".objectextensionfieldvaluerevisionid, "*SELECT* 4".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 4".approvalcomments, "*SELECT* 4".timesheetid, "*SELECT* 4".userid
  • Buffers: shared hit=726,349,436 read=1,511,262
34. 29,376.313 2,176,473.277 ↓ 6,736.6 35,238,930 1

Nested Loop Left Join (cost=34.30..212,529.41 rows=5,231 width=406) (actual time=46.362..2,176,473.277 rows=35,238,930 loops=1)

  • Output: ts_4.id, ts_4.userid, NULL::date, NULL::date, 'urn:replicon:policy:timesheet:timesheet-format:gen4-timesheet'::text, 101, rev_1.timeentryid, rev_1.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, mdrev.id, mdrev.previousrevisionid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_1.uri, NULL::integer, actualuser_1.uri, NULL::text, mdrev.fromtimestamputc, mdrev.totimestamputc, NULL::text
  • Buffers: shared hit=726,349,436 read=1,511,262
35. 5,850.761 2,041,380.174 ↓ 6,736.6 35,238,930 1

Nested Loop Left Join (cost=33.61..208,669.30 rows=5,231 width=165) (actual time=46.347..2,041,380.174 rows=35,238,930 loops=1)

  • Output: mdrev.id, mdrev.previousrevisionid, mdrev.fromtimestamputc, mdrev.totimestamputc, mdrev.openingauditid, rev_1.timeentryid, rev_1.entrydate, ts_4.id, ts_4.userid, effectiveuser_1.uri
  • Buffers: shared hit=513,607,516 read=1,511,262
36. 5,310.905 1,859,334.763 ↓ 6,736.6 35,238,930 1

Nested Loop Anti Join (cost=32.92..204,809.19 rows=5,231 width=104) (actual time=46.317..1,859,334.763 rows=35,238,930 loops=1)

  • Output: mdrev.id, mdrev.previousrevisionid, mdrev.fromtimestamputc, mdrev.totimestamputc, mdrev.openingauditid, rev_1.timeentryid, rev_1.entrydate, ts_4.id, ts_4.userid
  • Buffers: shared hit=300,700,643 read=1,511,262
37. 13,588.434 1,715,149.076 ↓ 206.2 46,291,594 1

Nested Loop (cost=32.49..100,365.93 rows=224,489 width=120) (actual time=43.531..1,715,149.076 rows=46,291,594 loops=1)

  • Output: mdrev.id, mdrev.previousrevisionid, mdrev.fromtimestamputc, mdrev.totimestamputc, mdrev.timeentryid, mdrev.openingauditid, rev_1.timeentryid, rev_1.entrydate, ts_4.id, ts_4.userid
  • Buffers: shared hit=115,092,215 read=1,497,674
38. 3,427.009 14,720.682 ↓ 238.6 12,403,235 1

Nested Loop (cost=31.93..2,098.82 rows=51,977 width=56) (actual time=26.049..14,720.682 rows=12,403,235 loops=1)

  • Output: rev_1.timeentryid, rev_1.entrydate, rev_1.fromtimestamputc, rev_1.totimestamputc, ts_4.id, ts_4.userid
  • Buffers: shared hit=652,214
39. 76.262 244.517 ↓ 724.3 21,006 1

Nested Loop (cost=31.49..93.35 rows=29 width=28) (actual time=26.009..244.517 rows=21,006 loops=1)

  • Output: ts_4.id, ts_4.userid, ts_4.startdate, ts_4.enddate
  • Inner Unique: true
  • Buffers: shared hit=63,547
40. 43.497 63.225 ↓ 724.3 21,006 1

HashAggregate (cost=31.20..31.49 rows=29 width=16) (actual time=25.987..63.225 rows=21,006 loops=1)

  • Output: timesheetpolicysettingssnapshot_1.timesheetid
  • Group Key: timesheetpolicysettingssnapshot_1.timesheetid
  • Buffers: shared hit=369
41. 19.728 19.728 ↓ 724.3 21,006 1

Index Scan using ixtspss2key on "CBRE_sanitized_761".timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_1 (cost=0.55..31.13 rows=29 width=16) (actual time=0.049..19.728 rows=21,006 loops=1)

  • 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=369
42. 105.030 105.030 ↑ 1.0 1 21,006

Index Scan using timesheet_pkey on "CBRE_sanitized_761".timesheet ts_4 (cost=0.29..2.13 rows=1 width=28) (actual time=0.005..0.005 rows=1 loops=21,006)

  • 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=63,178
43. 11,049.156 11,049.156 ↑ 2.9 590 21,006

Index Scan using ixter2userid on "CBRE_sanitized_761".timeentryrevision rev_1 (cost=0.43..51.87 rows=1,728 width=40) (actual time=0.017..0.526 rows=590 loops=21,006)

  • 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, rev_1.approvalstatus
  • 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=588,667
44. 1,686,839.960 1,686,839.960 ↑ 1.2 4 12,403,235

Index Scan using ixtemrtimeentryid on "CBRE_sanitized_761".timeentrymetadatarevision mdrev (cost=0.56..1.84 rows=5 width=80) (actual time=0.074..0.136 rows=4 loops=12,403,235)

  • 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.timeentryid = rev_1.timeentryid)
  • Filter: ((mdrev.fromtimestamputc >= '2020-01-01 06:00:00'::timestamp without time zone) AND (mdrev.fromtimestamputc < '2020-09-04 05:00:00'::timestamp without time zone) AND (rev_1.fromtimestamputc <= mdrev.fromtimestamputc) AND ((rev_1.totimestamputc IS NULL) OR (rev_1.totimestamputc > mdrev.fromtimestamputc)))
  • Rows Removed by Filter: 24
  • Buffers: shared hit=114,440,001 read=1,497,674
45. 138,874.782 138,874.782 ↓ 0.0 0 46,291,594

Index Scan using timeentryrevision_singleinitialrevision on "CBRE_sanitized_761".timeentryrevision (cost=0.43..0.46 rows=1 width=24) (actual time=0.003..0.003 rows=0 loops=46,291,594)

  • 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, timeentryrevision.approvalstatus
  • Index Cond: (timeentryrevision.timeentryid = mdrev.timeentryid)
  • Filter: (timeentryrevision.fromtimestamputc = mdrev.fromtimestamputc)
  • Rows Removed by Filter: 1
  • Buffers: shared hit=185,608,428 read=13,588
46. 176,194.650 176,194.650 ↑ 1.0 1 35,238,930

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue effectiveuser_1 (cost=0.69..0.73 rows=1 width=77) (actual time=0.004..0.005 rows=1 loops=35,238,930)

  • 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=212,906,873
47. 105,716.790 105,716.790 ↑ 1.0 1 35,238,930

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue actualuser_1 (cost=0.69..0.73 rows=1 width=77) (actual time=0.003..0.003 rows=1 loops=35,238,930)

  • 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=212,741,920
48. 6.620 555,030.816 ↑ 10.2 8,854 1

Subquery Scan on *SELECT* 5 (cost=35.43..549,341.83 rows=90,182 width=366) (actual time=776.204..555,030.816 rows=8,854 loops=1)

  • Output: "*SELECT* 5".action, "*SELECT* 5".modifiedbyuserid, "*SELECT* 5".modifiedbyuseruri, "*SELECT* 5".modifiedbyactualuserid, "*SELECT* 5".modifiedbyactualuseruri, "*SELECT* 5".modifiedonutc, "*SELECT* 5".validuntilutc, "*SELECT* 5".entrydate, "*SELECT* 5".timesheetformaturi, "*SELECT* 5".entryid, "*SELECT* 5".mostrecentrevisionid, "*SELECT* 5".revisionid, "*SELECT* 5".previousrevisionid, "*SELECT* 5".metadatarevisionid, "*SELECT* 5".metadatapreviousrevisionid, "*SELECT* 5".objectextensionfieldvaluerevisionid, "*SELECT* 5".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 5".approvalcomments, "*SELECT* 5".timesheetid, "*SELECT* 5".userid
  • Buffers: shared hit=412,432,799 read=16,564
49. 24.282 555,024.196 ↑ 10.2 8,854 1

Nested Loop Anti Join (cost=35.43..548,440.01 rows=90,182 width=406) (actual time=776.203..555,024.196 rows=8,854 loops=1)

  • Output: ts_5.id, ts_5.userid, NULL::date, NULL::date, 'urn:replicon:policy:timesheet:timesheet-format:gen4-timesheet'::text, 101, rev_2.timeentryid, rev_2.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, mdrev_1.id, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_2.uri, NULL::integer, actualuser_2.uri, NULL::text, mdrev_1.totimestamputc, NULL::timestamp without time zone, NULL::text
  • Buffers: shared hit=412,432,799 read=16,564
50. 19.490 536,065.555 ↑ 9.5 9,453 1

Nested Loop Left Join (cost=34.43..439,714.40 rows=90,182 width=202) (actual time=771.082..536,065.555 rows=9,453 loops=1)

  • Output: mdrev_1.id, mdrev_1.totimestamputc, mdrev_1.timeentryid, rev_2.timeentryid, rev_2.entrydate, ts_5.id, ts_5.userid, effectiveuser_2.uri, actualuser_2.uri
  • Buffers: shared hit=412,330,980
51. 18.363 536,008.253 ↑ 9.5 9,453 1

Nested Loop Left Join (cost=33.74..371,595.36 rows=90,182 width=157) (actual time=771.068..536,008.253 rows=9,453 loops=1)

  • Output: mdrev_1.id, mdrev_1.totimestamputc, mdrev_1.timeentryid, mdrev_1.openingauditid, rev_2.timeentryid, rev_2.entrydate, ts_5.id, ts_5.userid, effectiveuser_2.uri
  • Buffers: shared hit=412,273,948
52. 28,495.336 535,876.454 ↑ 9.5 9,453 1

Nested Loop Anti Join (cost=33.06..303,476.32 rows=90,182 width=96) (actual time=771.037..535,876.454 rows=9,453 loops=1)

  • Output: mdrev_1.id, mdrev_1.totimestamputc, mdrev_1.timeentryid, mdrev_1.openingauditid, rev_2.timeentryid, rev_2.entrydate, ts_5.id, ts_5.userid
  • Buffers: shared hit=412,216,854
53. 12,110.204 212,012.152 ↓ 270.9 32,818,774 1

Nested Loop (cost=32.49..99,326.39 rows=121,167 width=158) (actual time=29.289..212,012.152 rows=32,818,774 loops=1)

  • Output: mdrev_1.id, mdrev_1.totimestamputc, mdrev_1.timeentryid, mdrev_1.openingauditid, mdrev_1.key, mdrev_1.closingauditid, rev_2.timeentryid, rev_2.entrydate, ts_5.id, ts_5.userid
  • Buffers: shared hit=116,583,291
54. 3,005.168 13,853.423 ↓ 238.6 12,403,235 1

Nested Loop (cost=31.93..2,098.82 rows=51,977 width=56) (actual time=29.230..13,853.423 rows=12,403,235 loops=1)

  • Output: rev_2.timeentryid, rev_2.entrydate, rev_2.fromtimestamputc, rev_2.totimestamputc, ts_5.id, ts_5.userid
  • Buffers: shared hit=652,214
55. 56.903 219.219 ↓ 724.3 21,006 1

Nested Loop (cost=31.49..93.35 rows=29 width=28) (actual time=29.190..219.219 rows=21,006 loops=1)

  • Output: ts_5.id, ts_5.userid, ts_5.startdate, ts_5.enddate
  • Inner Unique: true
  • Buffers: shared hit=63,547
56. 35.449 57.286 ↓ 724.3 21,006 1

HashAggregate (cost=31.20..31.49 rows=29 width=16) (actual time=29.167..57.286 rows=21,006 loops=1)

  • Output: timesheetpolicysettingssnapshot_2.timesheetid
  • Group Key: timesheetpolicysettingssnapshot_2.timesheetid
  • Buffers: shared hit=369
57. 21.837 21.837 ↓ 724.3 21,006 1

Index Scan using ixtspss2key on "CBRE_sanitized_761".timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_2 (cost=0.55..31.13 rows=29 width=16) (actual time=0.045..21.837 rows=21,006 loops=1)

  • Output: timesheetpolicysettingssnapshot_2.id, timesheetpolicysettingssnapshot_2.timesheetid, timesheetpolicysettingssnapshot_2.parentid, timesheetpolicysettingssnapshot_2.index, timesheetpolicysettingssnapshot_2.key, timesheetpolicysettingssnapshot_2.uri, timesheetpolicysettingssnapshot_2.slug, timesheetpolicysettingssnapshot_2."boolean", timesheetpolicysettingssnapshot_2.date, timesheetpolicysettingssnapshot_2.number, timesheetpolicysettingssnapshot_2.text, timesheetpolicysettingssnapshot_2."time", timesheetpolicysettingssnapshot_2.timespan, timesheetpolicysettingssnapshot_2.daterange_startdate, timesheetpolicysettingssnapshot_2.daterange_enddate, timesheetpolicysettingssnapshot_2.daterange_relativedaterangeuri, timesheetpolicysettingssnapshot_2.daterange_relativedaterangeasofdate, timesheetpolicysettingssnapshot_2.workdayduration_decimalworkdays, timesheetpolicysettingssnapshot_2.workdayduration_workdays, timesheetpolicysettingssnapshot_2.workdayduration_hours, timesheetpolicysettingssnapshot_2.workdayduration_minutes
  • 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=369
58. 105.030 105.030 ↑ 1.0 1 21,006

Index Scan using timesheet_pkey on "CBRE_sanitized_761".timesheet ts_5 (cost=0.29..2.13 rows=1 width=28) (actual time=0.005..0.005 rows=1 loops=21,006)

  • 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
  • Index Cond: (ts_5.id = timesheetpolicysettingssnapshot_2.timesheetid)
  • Buffers: shared hit=63,178
59. 10,629.036 10,629.036 ↑ 2.9 590 21,006

Index Scan using ixter2userid on "CBRE_sanitized_761".timeentryrevision rev_2 (cost=0.43..51.87 rows=1,728 width=40) (actual time=0.016..0.506 rows=590 loops=21,006)

  • 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, rev_2.approvalstatus
  • 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=588,667
60. 186,048.525 186,048.525 ↑ 1.0 3 12,403,235

Index Scan using ixtemrtimeentryid on "CBRE_sanitized_761".timeentrymetadatarevision mdrev_1 (cost=0.56..1.84 rows=3 width=118) (actual time=0.010..0.015 rows=3 loops=12,403,235)

  • 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-01-01 06:00:00'::timestamp without time zone) AND (mdrev_1.totimestamputc < '2020-09-04 05: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: 26
  • Buffers: shared hit=115,931,077
61. 295,368.966 295,368.966 ↑ 1.0 1 32,818,774

Index Scan using ixtemrtimeentryid on "CBRE_sanitized_761".timeentrymetadatarevision (cost=0.56..1.67 rows=1 width=86) (actual time=0.009..0.009 rows=1 loops=32,818,774)

  • 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
  • Index Cond: (timeentrymetadatarevision.timeentryid = mdrev_1.timeentryid)
  • Filter: ((timeentrymetadatarevision.key = mdrev_1.key) AND (timeentrymetadatarevision.fromtimestamputc = mdrev_1.totimestamputc) AND (timeentrymetadatarevision.openingauditid = mdrev_1.closingauditid))
  • Rows Removed by Filter: 19
  • Buffers: shared hit=295,633,563
62. 113.436 113.436 ↑ 1.0 1 9,453

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue effectiveuser_2 (cost=0.69..0.75 rows=1 width=77) (actual time=0.011..0.012 rows=1 loops=9,453)

  • 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=57,094
63. 37.812 37.812 ↑ 1.0 1 9,453

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue actualuser_2 (cost=0.69..0.75 rows=1 width=77) (actual time=0.004..0.004 rows=1 loops=9,453)

  • 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=57,032
64. 47.265 18,934.359 ↓ 0.0 0 9,453

Nested Loop Left Join (cost=1.00..1.20 rows=1 width=24) (actual time=2.003..2.003 rows=0 loops=9,453)

  • 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=101,819 read=16,564
65. 9,698.778 9,698.778 ↑ 1.0 1 9,453

Index Scan using ixtertimeentryid on "CBRE_sanitized_761".timeentryrevision rev_1_1 (cost=0.56..0.71 rows=1 width=40) (actual time=1.009..1.026 rows=1 loops=9,453)

  • 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, rev_1_1.approvalstatus
  • Index Cond: (rev_1_1.timeentryid = mdrev_1.timeentryid)
  • Filter: (rev_1_1.totimestamputc = mdrev_1.totimestamputc)
  • Rows Removed by Filter: 6
  • Buffers: shared hit=72,675 read=8,428
66. 9,188.316 9,188.316 ↑ 1.0 1 9,453

Index Scan using timeentryrevision_uniquepreviousrevisionid on "CBRE_sanitized_761".timeentryrevision child_rev (cost=0.43..0.47 rows=1 width=32) (actual time=0.972..0.972 rows=1 loops=9,453)

  • 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, child_rev.approvalstatus
  • Index Cond: (child_rev.previousrevisionid = rev_1_1.id)
  • Buffers: shared hit=29,144 read=8,136
67. 0.001 28,951.394 ↓ 0.0 0 1

Subquery Scan on *SELECT* 6 (cost=3,750.34..214,818.62 rows=1 width=366) (actual time=28,951.394..28,951.394 rows=0 loops=1)

  • Output: "*SELECT* 6".action, "*SELECT* 6".modifiedbyuserid, "*SELECT* 6".modifiedbyuseruri, "*SELECT* 6".modifiedbyactualuserid, "*SELECT* 6".modifiedbyactualuseruri, "*SELECT* 6".modifiedonutc, "*SELECT* 6".validuntilutc, "*SELECT* 6".entrydate, "*SELECT* 6".timesheetformaturi, "*SELECT* 6".entryid, "*SELECT* 6".mostrecentrevisionid, "*SELECT* 6".revisionid, "*SELECT* 6".previousrevisionid, "*SELECT* 6".metadatarevisionid, "*SELECT* 6".metadatapreviousrevisionid, "*SELECT* 6".objectextensionfieldvaluerevisionid, "*SELECT* 6".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 6".approvalcomments, "*SELECT* 6".timesheetid, "*SELECT* 6".userid
  • Buffers: shared hit=1,956,652 read=147,089, temp read=570,318 written=570,276
68. 0.001 28,951.393 ↓ 0.0 0 1

Nested Loop Left Join (cost=3,750.34..214,818.61 rows=1 width=406) (actual time=28,951.393..28,951.393 rows=0 loops=1)

  • Output: ts_6.id, ts_6.userid, NULL::date, NULL::date, 'urn:replicon:policy:timesheet:timesheet-format:gen4-timesheet'::text, 101, rev_3.timeentryid, rev_3.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, oefvr.id, oefvr.previousrevisionid, NULL::integer, effectiveuser_3.uri, NULL::integer, actualuser_3.uri, NULL::text, oefvr.fromtimestamputc, oefvr.totimestamputc, NULL::text
  • Buffers: shared hit=1,956,652 read=147,089, temp read=570,318 written=570,276
69. 0.000 28,951.392 ↓ 0.0 0 1

Nested Loop Left Join (cost=3,749.65..214,817.76 rows=1 width=165) (actual time=28,951.392..28,951.392 rows=0 loops=1)

  • Output: oefvr.id, oefvr.previousrevisionid, oefvr.fromtimestamputc, oefvr.totimestamputc, oefvr.openingauditid, rev_3.timeentryid, rev_3.entrydate, ts_6.id, ts_6.userid, effectiveuser_3.uri
  • Buffers: shared hit=1,956,652 read=147,089, temp read=570,318 written=570,276
70. 264.548 28,951.462 ↓ 0.0 0 1

Gather (cost=3,748.97..214,816.91 rows=1 width=104) (actual time=28,951.391..28,951.462 rows=0 loops=1)

  • Output: oefvr.id, oefvr.previousrevisionid, oefvr.fromtimestamputc, oefvr.totimestamputc, oefvr.openingauditid, rev_3.timeentryid, rev_3.entrydate, ts_6.id, ts_6.userid
  • Workers Planned: 2
  • Workers Launched: 2
  • Buffers: shared hit=1,956,652 read=147,089, temp read=570,318 written=570,276
71. 0.001 28,686.914 ↓ 0.0 0 3 / 3

Nested Loop Anti Join (cost=2,748.97..213,816.81 rows=1 width=104) (actual time=28,686.914..28,686.914 rows=0 loops=3)

  • Output: oefvr.id, oefvr.previousrevisionid, oefvr.fromtimestamputc, oefvr.totimestamputc, oefvr.openingauditid, rev_3.timeentryid, rev_3.entrydate, ts_6.id, ts_6.userid
  • Buffers: shared hit=1,956,652 read=147,089, temp read=570,318 written=570,276
  • Worker 0: actual time=28,920.271..28920.271 rows=0 loops=1
  • Buffers: shared hit=652,217 read=48,648, temp read=189,830 written=189,816
  • Worker 1: actual time=28,240.814..28240.814 rows=0 loops=1
  • Buffers: shared hit=652,218 read=40,967, temp read=183,580 written=183,566
72. 10,918.471 28,686.913 ↓ 0.0 0 3 / 3

Hash Join (cost=2,748.54..206,752.07 rows=14,296 width=120) (actual time=28,686.913..28,686.913 rows=0 loops=3)

  • Output: oefvr.id, oefvr.previousrevisionid, oefvr.fromtimestamputc, oefvr.totimestamputc, oefvr.objectid, oefvr.openingauditid, rev_3.timeentryid, rev_3.entrydate, ts_6.id, ts_6.userid
  • Hash Cond: (oefvr.objectid = rev_3.timeentryid)
  • Join Filter: ((rev_3.fromtimestamputc <= oefvr.fromtimestamputc) AND ((rev_3.totimestamputc IS NULL) OR (rev_3.totimestamputc > oefvr.fromtimestamputc)))
  • Buffers: shared hit=1,956,652 read=147,089, temp read=570,318 written=570,276
  • Worker 0: actual time=28,920.269..28920.269 rows=0 loops=1
  • Buffers: shared hit=652,217 read=48,648, temp read=189,830 written=189,816
  • Worker 1: actual time=28,240.812..28240.813 rows=0 loops=1
  • Buffers: shared hit=652,218 read=40,967, temp read=183,580 written=183,566
73. 738.139 738.139 ↑ 1.3 2,373,494 3 / 3

Parallel Seq Scan on "CBRE_sanitized_761".objectextensionfieldvaluerevision oefvr (cost=0.00..191,596.02 rows=2,966,868 width=80) (actual time=1.414..738.139 rows=2,373,494 loops=3)

  • 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
  • Filter: ((oefvr.fromtimestamputc >= '2020-01-01 06:00:00'::timestamp without time zone) AND (oefvr.fromtimestamputc < '2020-09-04 05:00:00'::timestamp without time zone))
  • Buffers: shared hit=4 read=147,089
  • Worker 0: actual time=2.145..729.794 rows=2,354,308 loops=1
  • Buffers: shared read=48,648
  • Worker 1: actual time=1.072..638.125 rows=1,983,740 loops=1
  • Buffers: shared hit=1 read=40,967
74. 5,311.375 17,030.303 ↓ 238.6 12,403,235 3 / 3

Hash (cost=2,098.82..2,098.82 rows=51,977 width=56) (actual time=17,030.303..17,030.303 rows=12,403,235 loops=3)

  • Output: rev_3.timeentryid, rev_3.entrydate, rev_3.fromtimestamputc, rev_3.totimestamputc, ts_6.id, ts_6.userid
  • Buckets: 4,194,304 (originally 65536) Batches: 8 (originally 1) Memory Usage: 249,203kB
  • Buffers: shared hit=1,956,648, temp written=309,897
  • Worker 0: actual time=16,859.408..16859.408 rows=12,403,235 loops=1
  • Buffers: shared hit=652,217, temp written=103,299
  • Worker 1: actual time=17,731.124..17731.125 rows=12,403,235 loops=1
  • Buffers: shared hit=652,217, temp written=103,299
75. 2,953.589 11,718.928 ↓ 238.6 12,403,235 3 / 3

Nested Loop (cost=31.93..2,098.82 rows=51,977 width=56) (actual time=29.334..11,718.928 rows=12,403,235 loops=3)

  • Output: rev_3.timeentryid, rev_3.entrydate, rev_3.fromtimestamputc, rev_3.totimestamputc, ts_6.id, ts_6.userid
  • Buffers: shared hit=1,956,648
  • Worker 0: actual time=28.816..11545.200 rows=12,403,235 loops=1
  • Buffers: shared hit=652,217
  • Worker 1: actual time=24.851..11797.756 rows=12,403,235 loops=1
  • Buffers: shared hit=652,217
76. 29.315 131.873 ↓ 724.3 21,006 3 / 3

Nested Loop (cost=31.49..93.35 rows=29 width=28) (actual time=29.292..131.873 rows=21,006 loops=3)

  • Output: ts_6.id, ts_6.userid, ts_6.startdate, ts_6.enddate
  • Inner Unique: true
  • Buffers: shared hit=190,645
  • Worker 0: actual time=28.778..130.599 rows=21,006 loops=1
  • Buffers: shared hit=63,549
  • Worker 1: actual time=24.810..127.914 rows=21,006 loops=1
  • Buffers: shared hit=63,549
77. 18.138 39.540 ↓ 724.3 21,006 3 / 3

HashAggregate (cost=31.20..31.49 rows=29 width=16) (actual time=29.272..39.540 rows=21,006 loops=3)

  • Output: timesheetpolicysettingssnapshot_3.timesheetid
  • Group Key: timesheetpolicysettingssnapshot_3.timesheetid
  • Buffers: shared hit=1,109
  • Worker 0: actual time=28.759..39.020 rows=21,006 loops=1
  • Buffers: shared hit=370
  • Worker 1: actual time=24.790..35.198 rows=21,006 loops=1
  • Buffers: shared hit=370
78. 21.402 21.402 ↓ 724.3 21,006 3 / 3

Index Scan using ixtspss2key on "CBRE_sanitized_761".timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_3 (cost=0.55..31.13 rows=29 width=16) (actual time=0.050..21.402 rows=21,006 loops=3)

  • 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: ((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))
  • Buffers: shared hit=1,109
  • Worker 0: actual time=0.061..20.820 rows=21,006 loops=1
  • Buffers: shared hit=370
  • Worker 1: actual time=0.042..18.134 rows=21,006 loops=1
  • Buffers: shared hit=370
79. 63.018 63.018 ↑ 1.0 1 63,018 / 3

Index Scan using timesheet_pkey on "CBRE_sanitized_761".timesheet ts_6 (cost=0.29..2.13 rows=1 width=28) (actual time=0.003..0.003 rows=1 loops=63,018)

  • 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.id = timesheetpolicysettingssnapshot_3.timesheetid)
  • Buffers: shared hit=189,536
  • Worker 0: actual time=0.003..0.003 rows=1 loops=21,006
  • Buffers: shared hit=63,179
  • Worker 1: actual time=0.003..0.003 rows=1 loops=21,006
  • Buffers: shared hit=63,179
80. 8,633.466 8,633.466 ↑ 2.9 590 63,018 / 3

Index Scan using ixter2userid on "CBRE_sanitized_761".timeentryrevision rev_3 (cost=0.43..51.87 rows=1,728 width=40) (actual time=0.014..0.411 rows=590 loops=63,018)

  • 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, rev_3.approvalstatus
  • Index Cond: ((rev_3.userid = ts_6.userid) AND (rev_3.entrydate >= ts_6.startdate) AND (rev_3.entrydate <= ts_6.enddate))
  • Buffers: shared hit=1,766,003
  • Worker 0: actual time=0.014..0.403 rows=590 loops=21,006
  • Buffers: shared hit=588,668
  • Worker 1: actual time=0.014..0.414 rows=590 loops=21,006
  • Buffers: shared hit=588,668
81. 0.000 0.000 ↓ 0.0 0 / 3

Index Scan using timeentryrevision_singleinitialrevision on "CBRE_sanitized_761".timeentryrevision timeentryrevision_1 (cost=0.43..0.48 rows=1 width=24) (never executed)

  • 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, timeentryrevision_1.approvalstatus
  • Index Cond: (timeentryrevision_1.timeentryid = oefvr.objectid)
  • Filter: (timeentryrevision_1.fromtimestamputc = oefvr.fromtimestamputc)
82. 0.000 0.000 ↓ 0.0 0

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue effectiveuser_3 (cost=0.69..0.84 rows=1 width=77) (never executed)

  • 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))
83. 0.000 0.000 ↓ 0.0 0

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue actualuser_3 (cost=0.69..0.84 rows=1 width=77) (never executed)

  • 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))
84. 0.000 27,399.667 ↓ 0.0 0 1

Subquery Scan on *SELECT* 7 (cost=3,751.34..225,334.66 rows=2,018 width=366) (actual time=27,399.667..27,399.667 rows=0 loops=1)

  • Output: "*SELECT* 7".action, "*SELECT* 7".modifiedbyuserid, "*SELECT* 7".modifiedbyuseruri, "*SELECT* 7".modifiedbyactualuserid, "*SELECT* 7".modifiedbyactualuseruri, "*SELECT* 7".modifiedonutc, "*SELECT* 7".validuntilutc, "*SELECT* 7".entrydate, "*SELECT* 7".timesheetformaturi, "*SELECT* 7".entryid, "*SELECT* 7".mostrecentrevisionid, "*SELECT* 7".revisionid, "*SELECT* 7".previousrevisionid, "*SELECT* 7".metadatarevisionid, "*SELECT* 7".metadatapreviousrevisionid, "*SELECT* 7".objectextensionfieldvaluerevisionid, "*SELECT* 7".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 7".approvalcomments, "*SELECT* 7".timesheetid, "*SELECT* 7".userid
  • Buffers: shared hit=2,103,741, temp read=567,133 written=567,091
85. 262.340 27,399.731 ↓ 0.0 0 1

Gather (cost=3,751.34..225,314.48 rows=2,018 width=406) (actual time=27,399.666..27,399.731 rows=0 loops=1)

  • Output: ts_7.id, ts_7.userid, NULL::date, NULL::date, 'urn:replicon:policy:timesheet:timesheet-format:gen4-timesheet'::text, 101, rev_4.timeentryid, rev_4.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, oefvr_1.id, NULL::integer, effectiveuser_4.uri, NULL::integer, actualuser_4.uri, NULL::text, oefvr_1.totimestamputc, NULL::timestamp without time zone, NULL::text
  • Workers Planned: 2
  • Workers Launched: 2
  • Buffers: shared hit=2,103,741, temp read=567,133 written=567,091
86. 0.000 27,137.391 ↓ 0.0 0 3 / 3

Nested Loop Anti Join (cost=2,751.34..224,112.68 rows=841 width=406) (actual time=27,137.391..27,137.391 rows=0 loops=3)

  • Output: ts_7.id, ts_7.userid, NULL::date, NULL::date, 'urn:replicon:policy:timesheet:timesheet-format:gen4-timesheet'::text, 101, rev_4.timeentryid, rev_4.entrydate, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, oefvr_1.id, NULL::integer, effectiveuser_4.uri, NULL::integer, actualuser_4.uri, NULL::text, oefvr_1.totimestamputc, NULL::timestamp without time zone, NULL::text
  • Buffers: shared hit=2,103,741, temp read=567,133 written=567,091
  • Worker 0: actual time=26,665.883..26665.883 rows=0 loops=1
  • Buffers: shared hit=690,494, temp read=180,508 written=180,494
  • Worker 1: actual time=27,348.208..27348.208 rows=0 loops=1
  • Buffers: shared hit=697,793, temp read=186,453 written=186,439
87. 0.001 27,137.391 ↓ 0.0 0 3 / 3

Nested Loop Left Join (cost=2,750.34..223,073.09 rows=841 width=202) (actual time=27,137.391..27,137.391 rows=0 loops=3)

  • Output: oefvr_1.id, oefvr_1.totimestamputc, oefvr_1.objectid, rev_4.timeentryid, rev_4.entrydate, ts_7.id, ts_7.userid, effectiveuser_4.uri, actualuser_4.uri
  • Buffers: shared hit=2,103,741, temp read=567,133 written=567,091
  • Worker 0: actual time=26,665.882..26665.882 rows=0 loops=1
  • Buffers: shared hit=690,494, temp read=180,508 written=180,494
  • Worker 1: actual time=27,348.208..27348.208 rows=0 loops=1
  • Buffers: shared hit=697,793, temp read=186,453 written=186,439
88. 0.001 27,137.390 ↓ 0.0 0 3 / 3

Nested Loop Left Join (cost=2,749.66..222,350.29 rows=841 width=157) (actual time=27,137.390..27,137.390 rows=0 loops=3)

  • Output: oefvr_1.id, oefvr_1.totimestamputc, oefvr_1.objectid, oefvr_1.openingauditid, rev_4.timeentryid, rev_4.entrydate, ts_7.id, ts_7.userid, effectiveuser_4.uri
  • Buffers: shared hit=2,103,741, temp read=567,133 written=567,091
  • Worker 0: actual time=26,665.881..26665.881 rows=0 loops=1
  • Buffers: shared hit=690,494, temp read=180,508 written=180,494
  • Worker 1: actual time=27,348.207..27348.207 rows=0 loops=1
  • Buffers: shared hit=697,793, temp read=186,453 written=186,439
89. 0.001 27,137.389 ↓ 0.0 0 3 / 3

Nested Loop Anti Join (cost=2,748.97..221,627.49 rows=841 width=96) (actual time=27,137.389..27,137.389 rows=0 loops=3)

  • Output: oefvr_1.id, oefvr_1.totimestamputc, oefvr_1.objectid, oefvr_1.openingauditid, rev_4.timeentryid, rev_4.entrydate, ts_7.id, ts_7.userid
  • Buffers: shared hit=2,103,741, temp read=567,133 written=567,091
  • Worker 0: actual time=26,665.881..26665.881 rows=0 loops=1
  • Buffers: shared hit=690,494, temp read=180,508 written=180,494
  • Worker 1: actual time=27,348.206..27348.207 rows=0 loops=1
  • Buffers: shared hit=697,793, temp read=186,453 written=186,439
90. 9,884.118 27,137.388 ↓ 0.0 0 3 / 3

Hash Join (cost=2,748.54..205,971.02 rows=13,397 width=128) (actual time=27,137.388..27,137.388 rows=0 loops=3)

  • Output: oefvr_1.id, oefvr_1.totimestamputc, oefvr_1.objectid, oefvr_1.openingauditid, oefvr_1.definitionid, oefvr_1.closingauditid, rev_4.timeentryid, rev_4.entrydate, ts_7.id, ts_7.userid
  • Hash Cond: (oefvr_1.objectid = rev_4.timeentryid)
  • Join Filter: ((rev_4.fromtimestamputc <= oefvr_1.totimestamputc) AND ((rev_4.totimestamputc IS NULL) OR (rev_4.totimestamputc > oefvr_1.totimestamputc)))
  • Buffers: shared hit=2,103,741, temp read=567,133 written=567,091
  • Worker 0: actual time=26,665.880..26665.880 rows=0 loops=1
  • Buffers: shared hit=690,494, temp read=180,508 written=180,494
  • Worker 1: actual time=27,348.205..27348.205 rows=0 loops=1
  • Buffers: shared hit=697,793, temp read=186,453 written=186,439
91. 509.652 509.652 ↑ 1.2 2,298,282 3 / 3

Parallel Seq Scan on "CBRE_sanitized_761".objectextensionfieldvaluerevision oefvr_1 (cost=0.00..191,596.02 rows=2,780,102 width=88) (actual time=0.007..509.652 rows=2,298,282 loops=3)

  • 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
  • Filter: ((oefvr_1.totimestamputc IS NOT NULL) AND (oefvr_1.totimestamputc >= '2020-01-01 06:00:00'::timestamp without time zone) AND (oefvr_1.totimestamputc < '2020-09-04 05:00:00'::timestamp without time zone))
  • Rows Removed by Filter: 75,212
  • Buffers: shared hit=147,093
  • Worker 0: actual time=0.007..414.798 rows=1,788,180 loops=1
  • Buffers: shared hit=38,277
  • Worker 1: actual time=0.007..501.576 rows=2,144,799 loops=1
  • Buffers: shared hit=45,576
92. 5,065.870 16,743.618 ↓ 238.6 12,403,235 3 / 3

Hash (cost=2,098.82..2,098.82 rows=51,977 width=56) (actual time=16,743.618..16,743.618 rows=12,403,235 loops=3)

  • Output: rev_4.timeentryid, rev_4.entrydate, rev_4.fromtimestamputc, rev_4.totimestamputc, ts_7.id, ts_7.userid
  • Buckets: 4,194,304 (originally 65536) Batches: 8 (originally 1) Memory Usage: 249,203kB
  • Buffers: shared hit=1,956,648, temp written=309,897
  • Worker 0: actual time=17,732.230..17732.230 rows=12,403,235 loops=1
  • Buffers: shared hit=652,217, temp written=103,299
  • Worker 1: actual time=17,076.326..17076.326 rows=12,403,235 loops=1
  • Buffers: shared hit=652,217, temp written=103,299
93. 2,855.394 11,677.748 ↓ 238.6 12,403,235 3 / 3

Nested Loop (cost=31.93..2,098.82 rows=51,977 width=56) (actual time=26.854..11,677.748 rows=12,403,235 loops=3)

  • Output: rev_4.timeentryid, rev_4.entrydate, rev_4.fromtimestamputc, rev_4.totimestamputc, ts_7.id, ts_7.userid
  • Buffers: shared hit=1,956,648
  • Worker 0: actual time=27.708..11979.989 rows=12,403,235 loops=1
  • Buffers: shared hit=652,217
  • Worker 1: actual time=27.853..11694.364 rows=12,403,235 loops=1
  • Buffers: shared hit=652,217
94. 26.572 125.870 ↓ 724.3 21,006 3 / 3

Nested Loop (cost=31.49..93.35 rows=29 width=28) (actual time=26.823..125.870 rows=21,006 loops=3)

  • Output: ts_7.id, ts_7.userid, ts_7.startdate, ts_7.enddate
  • Inner Unique: true
  • Buffers: shared hit=190,645
  • Worker 0: actual time=27.680..129.061 rows=21,006 loops=1
  • Buffers: shared hit=63,549
  • Worker 1: actual time=27.826..127.039 rows=21,006 loops=1
  • Buffers: shared hit=63,549
95. 15.571 36.280 ↓ 724.3 21,006 3 / 3

HashAggregate (cost=31.20..31.49 rows=29 width=16) (actual time=26.805..36.280 rows=21,006 loops=3)

  • Output: timesheetpolicysettingssnapshot_4.timesheetid
  • Group Key: timesheetpolicysettingssnapshot_4.timesheetid
  • Buffers: shared hit=1,109
  • Worker 0: actual time=27.664..37.329 rows=21,006 loops=1
  • Buffers: shared hit=370
  • Worker 1: actual time=27.809..37.229 rows=21,006 loops=1
  • Buffers: shared hit=370
96. 20.709 20.709 ↓ 724.3 21,006 3 / 3

Index Scan using ixtspss2key on "CBRE_sanitized_761".timesheetpolicysettingssnapshot timesheetpolicysettingssnapshot_4 (cost=0.55..31.13 rows=29 width=16) (actual time=0.043..20.709 rows=21,006 loops=3)

  • 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: ((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))
  • Buffers: shared hit=1,109
  • Worker 0: actual time=0.037..21.592 rows=21,006 loops=1
  • Buffers: shared hit=370
  • Worker 1: actual time=0.041..21.687 rows=21,006 loops=1
  • Buffers: shared hit=370
97. 63.018 63.018 ↑ 1.0 1 63,018 / 3

Index Scan using timesheet_pkey on "CBRE_sanitized_761".timesheet ts_7 (cost=0.29..2.13 rows=1 width=28) (actual time=0.003..0.003 rows=1 loops=63,018)

  • 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.id = timesheetpolicysettingssnapshot_4.timesheetid)
  • Buffers: shared hit=189,536
  • Worker 0: actual time=0.003..0.003 rows=1 loops=21,006
  • Buffers: shared hit=63,179
  • Worker 1: actual time=0.003..0.003 rows=1 loops=21,006
  • Buffers: shared hit=63,179
98. 8,696.484 8,696.484 ↑ 2.9 590 63,018 / 3

Index Scan using ixter2userid on "CBRE_sanitized_761".timeentryrevision rev_4 (cost=0.43..51.87 rows=1,728 width=40) (actual time=0.014..0.414 rows=590 loops=63,018)

  • 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, rev_4.approvalstatus
  • Index Cond: ((rev_4.userid = ts_7.userid) AND (rev_4.entrydate >= ts_7.startdate) AND (rev_4.entrydate <= ts_7.enddate))
  • Buffers: shared hit=1,766,003
  • Worker 0: actual time=0.014..0.426 rows=590 loops=21,006
  • Buffers: shared hit=588,668
  • Worker 1: actual time=0.014..0.417 rows=590 loops=21,006
  • Buffers: shared hit=588,668
99. 0.000 0.000 ↓ 0.0 0 / 3

Index Scan using ixoefvr2fromtimestamputc on "CBRE_sanitized_761".objectextensionfieldvaluerevision (cost=0.43..1.16 rows=1 width=56) (never executed)

  • 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))
100. 0.000 0.000 ↓ 0.0 0 / 3

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue effectiveuser_4 (cost=0.69..0.85 rows=1 width=77) (never executed)

  • 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))
101. 0.000 0.000 ↓ 0.0 0 / 3

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue actualuser_4 (cost=0.69..0.85 rows=1 width=77) (never executed)

  • 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))
102. 0.000 0.000 ↓ 0.0 0 / 3

Nested Loop Left Join (cost=1.00..1.23 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)
103. 0.000 0.000 ↓ 0.0 0 / 3

Index Scan using ixtertimeentryid on "CBRE_sanitized_761".timeentryrevision rev_1_2 (cost=0.56..0.74 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, rev_1_2.approvalstatus
  • Index Cond: (rev_1_2.timeentryid = oefvr_1.objectid)
  • Filter: (rev_1_2.totimestamputc = oefvr_1.totimestamputc)
104. 0.000 0.000 ↓ 0.0 0 / 3

Index Scan using timeentryrevision_uniquepreviousrevisionid on "CBRE_sanitized_761".timeentryrevision child_rev_1 (cost=0.43..0.47 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, child_rev_1.approvalstatus
  • Index Cond: (child_rev_1.previousrevisionid = rev_1_2.id)
105. 74.295 16,054.766 ↓ 363,893.0 363,893 1

Subquery Scan on *SELECT* 8 (cost=1,003.35..797,619.96 rows=1 width=366) (actual time=3.393..16,054.766 rows=363,893 loops=1)

  • Output: "*SELECT* 8".action, "*SELECT* 8".modifiedbyuserid, "*SELECT* 8".modifiedbyuseruri, "*SELECT* 8".modifiedbyactualuserid, "*SELECT* 8".modifiedbyactualuseruri, "*SELECT* 8".modifiedonutc, "*SELECT* 8".validuntilutc, "*SELECT* 8".entrydate, "*SELECT* 8".timesheetformaturi, "*SELECT* 8".entryid, "*SELECT* 8".mostrecentrevisionid, "*SELECT* 8".revisionid, "*SELECT* 8".previousrevisionid, "*SELECT* 8".metadatarevisionid, "*SELECT* 8".metadatapreviousrevisionid, "*SELECT* 8".objectextensionfieldvaluerevisionid, "*SELECT* 8".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 8".approvalcomments, "*SELECT* 8".timesheetid, "*SELECT* 8".userid
  • Buffers: shared hit=7,454,184 read=74,719
106. 300.934 15,980.471 ↓ 363,893.0 363,893 1

Nested Loop Left Join (cost=1,003.35..797,619.95 rows=1 width=406) (actual time=3.392..15,980.471 rows=363,893 loops=1)

  • Output: ts_8.id, ts_8.userid, NULL::date, NULL::date, 'urn:replicon:policy:timesheet:timesheet-format:gen4-timesheet'::text, 102, rev_5.timeentryid, rev_5.entrydate, NULL::uuid, NULL::uuid, rev_5.id, NULL::uuid, NULL::uuid, NULL::uuid, NULL::uuid, NULL::integer, effectiveuser_5.uri, NULL::integer, actualuser_5.uri, NULL::text, rev_5.totimestamputc, NULL::timestamp without time zone, NULL::text
  • Buffers: shared hit=7,454,184 read=74,719
107. 406.030 14,223.965 ↓ 363,893.0 363,893 1

Nested Loop Left Join (cost=1,002.66..797,619.10 rows=1 width=202) (actual time=3.380..14,223.965 rows=363,893 loops=1)

  • Output: ts_8.id, ts_8.userid, rev_5.timeentryid, rev_5.entrydate, rev_5.id, rev_5.totimestamputc, rev_5.closingauditid, effectiveuser_5.uri, actualuser_5.uri
  • Buffers: shared hit=5,629,513 read=74,719
108. 220.516 12,726.256 ↓ 363,893.0 363,893 1

Nested Loop Left Join (cost=1,001.97..797,618.25 rows=1 width=141) (actual time=3.372..12,726.256 rows=363,893 loops=1)

  • Output: ts_8.id, ts_8.userid, rev_5.timeentryid, rev_5.entrydate, rev_5.id, rev_5.totimestamputc, rev_5.closingauditid, effectiveuser_5.uri
  • Buffers: shared hit=3,432,992 read=74,712
109. 200.682 9,958.489 ↓ 363,893.0 363,893 1

Nested Loop (cost=1,001.28..797,617.39 rows=1 width=80) (actual time=3.340..9,958.489 rows=363,893 loops=1)

  • Output: ts_8.id, ts_8.userid, rev_5.timeentryid, rev_5.entrydate, rev_5.id, rev_5.totimestamputc, rev_5.closingauditid
  • Buffers: shared hit=1,235,495 read=74,615
110. 0.000 8,641.537 ↓ 372,090.0 372,090 1

Gather (cost=1,001.00..797,616.93 rows=1 width=64) (actual time=1.057..8,641.537 rows=372,090 loops=1)

  • Output: rev_5.timeentryid, rev_5.entrydate, rev_5.id, rev_5.totimestamputc, rev_5.userid, rev_5.closingauditid
  • Workers Planned: 2
  • Workers Launched: 2
  • Buffers: shared hit=99,205 read=74,533
111. 1,590.264 13,466.566 ↓ 124,030.0 124,030 3 / 3

Merge Left Join (cost=1.00..796,616.83 rows=1 width=64) (actual time=1.797..13,466.566 rows=124,030 loops=3)

  • Output: rev_5.timeentryid, rev_5.entrydate, rev_5.id, rev_5.totimestamputc, rev_5.userid, rev_5.closingauditid
  • Inner Unique: true
  • Merge Cond: (rev_5.id = child_rev_2.previousrevisionid)
  • Filter: (child_rev_2.id IS NULL)
  • Rows Removed by Filter: 2,964,671
  • Buffers: shared hit=99,205 read=74,533
  • Worker 0: actual time=3.363..15907.598 rows=181,797 loops=1
  • Buffers: shared hit=30,133 read=36,929
  • Worker 1: actual time=1.950..15972.829 rows=186,369 loops=1
  • Buffers: shared hit=29,596 read=37,180
112. 4,365.770 4,365.770 ↓ 1.1 3,088,701 3 / 3

Parallel Index Scan using timeentryrevision_pkey on "CBRE_sanitized_761".timeentryrevision rev_5 (cost=0.56..417,348.07 rows=2,888,623 width=64) (actual time=1.320..4,365.770 rows=3,088,701 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, rev_5.approvalstatus
  • Filter: ((rev_5.totimestamputc IS NOT NULL) AND (rev_5.totimestamputc >= '2020-01-01 06:00:00'::timestamp without time zone) AND (rev_5.totimestamputc < '2020-09-04 05:00:00'::timestamp without time zone))
  • Rows Removed by Filter: 1,052,143
  • Buffers: shared hit=7,039 read=47,827
  • Worker 0: actual time=2.703..6415.989 rows=4,526,666 loops=1
  • Buffers: shared hit=3,427 read=23,631
  • Worker 1: actual time=1.224..6514.345 rows=4,641,653 loops=1
  • Buffers: shared hit=3,537 read=23,779
113. 7,510.532 7,510.532 ↑ 1.4 8,893,348 3 / 3

Index Scan using timeentryrevision_uniquepreviousrevisionid on "CBRE_sanitized_761".timeentryrevision child_rev_2 (cost=0.43..460,019.45 rows=12,422,534 width=32) (actual time=0.023..7,510.532 rows=8,893,348 loops=3)

  • 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, child_rev_2.approvalstatus
  • Buffers: shared hit=92,166 read=26,706
  • Worker 0: actual time=0.018..7543.342 rows=8,894,014 loops=1
  • Buffers: shared hit=26,706 read=13,298
  • Worker 1: actual time=0.028..7495.338 rows=8,893,848 loops=1
  • Buffers: shared hit=26,059 read=13,401
114. 1,116.270 1,116.270 ↑ 3.0 1 372,090

Index Scan using ixtsuseridstartdateenddate on "CBRE_sanitized_761".timesheet ts_8 (cost=0.29..0.43 rows=3 width=28) (actual time=0.003..0.003 rows=1 loops=372,090)

  • 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) AND (rev_5.entrydate <= ts_8.enddate))
  • Buffers: shared hit=1,136,290 read=82
115. 2,547.251 2,547.251 ↑ 1.0 1 363,893

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue effectiveuser_5 (cost=0.69..0.84 rows=1 width=77) (actual time=0.007..0.007 rows=1 loops=363,893)

  • 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=2,197,497 read=97
116. 1,091.679 1,091.679 ↑ 1.0 1 363,893

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue actualuser_5 (cost=0.69..0.84 rows=1 width=77) (actual time=0.003..0.003 rows=1 loops=363,893)

  • 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=2,196,521 read=7
117. 1,455.572 1,455.572 ↓ 0.0 0 363,893

Index Scan using uix4rakv_uniquekeyuri on "CBRE_sanitized_761".revisionauditkeyvalue changereason_1 (cost=0.69..0.84 rows=1 width=16) (actual time=0.004..0.004 rows=0 loops=363,893)

  • 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=1,824,671
118. 7.281 3,667.505 ↓ 4.7 41,905 1

Subquery Scan on *SELECT* 9 (cost=22,548.68..29,259.98 rows=8,938 width=440) (actual time=3,152.886..3,667.505 rows=41,905 loops=1)

  • Output: "*SELECT* 9".action, "*SELECT* 9".modifiedbyuserid, "*SELECT* 9".modifiedbyuseruri, "*SELECT* 9".modifiedbyactualuserid, "*SELECT* 9".modifiedbyactualuseruri, "*SELECT* 9".modifiedonutc, "*SELECT* 9".validuntilutc, "*SELECT* 9".entrydate, "*SELECT* 9".timesheetformaturi, "*SELECT* 9".entryid, "*SELECT* 9".mostrecentrevisionid, "*SELECT* 9".revisionid, "*SELECT* 9".previousrevisionid, "*SELECT* 9".metadatarevisionid, "*SELECT* 9".metadatapreviousrevisionid, "*SELECT* 9".objectextensionfieldvaluerevisionid, "*SELECT* 9".objectextensionfieldvaluepreviousrevisionid, "*SELECT* 9".approvalcomments, "*SELECT* 9".timesheetid, "*SELECT* 9".userid
  • Buffers: shared hit=4,264 read=37,321
119. 26.392 3,660.224 ↓ 4.7 41,905 1

Hash Right Join (cost=22,548.68..29,170.60 rows=8,938 width=480) (actual time=3,152.885..3,660.224 rows=41,905 loops=1)

  • Output: tah.timesheetid, ts_9.userid, NULL::date, NULL::date, tsformat_1.uri, 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, kv_aa.uri, tah.approvalcomments, tah.timestamputc, NULL::timestamp without time zone, NULL::text
  • Hash Cond: (kv_aa.timesheetapprovalhistoryid = tah.id)
  • Buffers: shared hit=4,264 read=37,321
120. 483.021 483.021 ↓ 6.1 42,294 1

Index Scan using ixtahkvkey on "CBRE_sanitized_761".timesheetapprovalhistorykeyvalue kv_aa (cost=0.55..6,586.91 rows=6,935 width=88) (actual time=2.006..483.021 rows=42,294 loops=1)

  • 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: (upper(kv_aa.key) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:ACTING-ACTUAL-USER'::text)
  • Buffers: shared hit=26 read=1,168
121. 23.949 3,150.811 ↓ 4.7 41,905 1

Hash (cost=22,436.40..22,436.40 rows=8,938 width=236) (actual time=3,150.811..3,150.811 rows=41,905 loops=1)

  • Output: tah.timesheetid, tah.action, tah.approvalcomments, tah.timestamputc, tah.id, ts_9.userid, tsformat_1.uri, kv_ea.uri
  • Buckets: 65,536 (originally 16384) Batches: 1 (originally 1) Memory Usage: 9,134kB
  • Buffers: shared hit=4,238 read=36,153
122. 32.887 3,126.862 ↓ 4.7 41,905 1

Hash Right Join (cost=15,814.48..22,436.40 rows=8,938 width=236) (actual time=484.683..3,126.862 rows=41,905 loops=1)

  • Output: tah.timesheetid, tah.action, tah.approvalcomments, tah.timestamputc, tah.id, ts_9.userid, tsformat_1.uri, kv_ea.uri
  • Hash Cond: (kv_ea.timesheetapprovalhistoryid = tah.id)
  • Buffers: shared hit=4,238 read=36,153
123. 2,614.917 2,614.917 ↓ 9.4 64,848 1

Index Scan using ixtahkvkey on "CBRE_sanitized_761".timesheetapprovalhistorykeyvalue kv_ea (cost=0.55..6,586.91 rows=6,935 width=88) (actual time=5.557..2,614.917 rows=64,848 loops=1)

  • 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: (upper(kv_ea.key) = 'URN:REPLICON:APPROVAL-HISTORICAL-ACTION-DATA-KEY:ACTING-EFFECTIVE-USER'::text)
  • Buffers: shared hit=1 read=34,759
124. 13.469 479.058 ↓ 4.7 41,905 1

Hash (cost=15,702.21..15,702.21 rows=8,938 width=164) (actual time=479.058..479.058 rows=41,905 loops=1)

  • Output: tah.timesheetid, tah.action, tah.approvalcomments, tah.timestamputc, tah.id, ts_9.userid, tsformat_1.uri
  • Buckets: 65,536 (originally 16384) Batches: 1 (originally 1) Memory Usage: 6,597kB
  • Buffers: shared hit=4,237 read=1,394
125. 13.924 465.589 ↓ 4.7 41,905 1

Hash Join (cost=12,947.03..15,702.21 rows=8,938 width=164) (actual time=412.936..465.589 rows=41,905 loops=1)

  • Output: tah.timesheetid, tah.action, tah.approvalcomments, tah.timestamputc, tah.id, ts_9.userid, tsformat_1.uri
  • Hash Cond: (tah.timesheetid = ts_9.id)
  • Buffers: shared hit=4,237 read=1,394
126. 41.684 414.801 ↓ 1.3 41,905 1

Seq Scan on "CBRE_sanitized_761".timesheetapprovalhistory tah (cost=6,652.03..9,196.81 rows=32,271 width=81) (actual time=376.038..414.801 rows=41,905 loops=1)

  • Output: tah.id, tah.serialnumber, tah.timesheetid, tah.action, tah.approvalcomments, tah.timestamputc, tah.approvalagenttype, tah.userid, tah.systemprocessidentifier
  • Filter: ((NOT (hashed SubPlan 3)) AND (tah.timestamputc >= '2020-01-01 06:00:00'::timestamp without time zone) AND (tah.timestamputc < '2020-09-04 05: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: 22,974
  • Buffers: shared hit=3,651 read=1,394
127.          

SubPlan (for Seq Scan)

128. 0.662 373.117 ↓ 1,362.0 1,362 1

Nested Loop (cost=6,593.73..6,652.03 rows=1 width=16) (actual time=111.859..373.117 rows=1,362 loops=1)

  • Output: tah_1.id
  • Buffers: shared hit=2,567 read=1,393
129. 3.206 123.209 ↓ 681.0 681 1

Hash Join (cost=6,593.32..6,649.57 rows=1 width=24) (actual time=107.978..123.209 rows=681 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=32 read=1,146
130.          

CTE firstactionaftersubmit

131. 18.824 107.911 ↓ 10.0 22,280 1

HashAggregate (cost=5,984.41..6,006.69 rows=2,228 width=24) (actual time=102.008..107.911 rows=22,280 loops=1)

  • Output: submissions.timesheetid, submissions.serialnumber, min(tah_3.serialnumber)
  • Group Key: submissions.timesheetid, submissions.serialnumber
  • Buffers: shared hit=22 read=1,142
132.          

CTE submissions

133. 20.332 20.332 ↑ 1.0 22,280 1

Index Scan using ixtahaction on "CBRE_sanitized_761".timesheetapprovalhistory (cost=0.29..1,361.25 rows=22,280 width=20) (actual time=1.741..20.332 rows=22,280 loops=1)

  • Output: timesheetapprovalhistory.timesheetid, timesheetapprovalhistory.serialnumber
  • Index Cond: (timesheetapprovalhistory.action = 1)
  • Buffers: shared hit=17 read=62
134. 14.710 89.087 ↓ 2.1 50,578 1

Hash Join (cost=2,544.78..4,443.86 rows=23,906 width=24) (actual time=50.493..89.087 rows=50,578 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: 29,722
  • Buffers: shared hit=22 read=1,142
135. 25.872 25.872 ↑ 1.0 22,280 1

CTE Scan on submissions (cost=0.00..445.60 rows=22,280 width=20) (actual time=1.744..25.872 rows=22,280 loops=1)

  • Output: submissions.timesheetid, submissions.serialnumber
  • Buffers: shared hit=17 read=62
136. 11.098 48.505 ↑ 1.0 64,879 1

Hash (cost=1,733.79..1,733.79 rows=64,879 width=20) (actual time=48.505..48.505 rows=64,879 loops=1)

  • Output: tah_3.serialnumber, tah_3.timesheetid
  • Buckets: 65,536 Batches: 1 Memory Usage: 3,807kB
  • Buffers: shared hit=5 read=1,080
137. 37.407 37.407 ↑ 1.0 64,879 1

Seq Scan on "CBRE_sanitized_761".timesheetapprovalhistory tah_3 (cost=0.00..1,733.79 rows=64,879 width=20) (actual time=0.003..37.407 rows=64,879 loops=1)

  • Output: tah_3.serialnumber, tah_3.timesheetid
  • Buffers: shared hit=5 read=1,080
138. 114.058 114.058 ↓ 10.0 22,280 1

CTE Scan on firstactionaftersubmit faas (cost=0.00..44.56 rows=2,228 width=24) (actual time=102.010..114.058 rows=22,280 loops=1)

  • Output: faas.timesheetid, faas.submission_serialnumber, faas.nextaction_serialnumber
  • Buffers: shared hit=22 read=1,142
139. 0.118 5.945 ↓ 116.0 696 1

Hash (cost=586.54..586.54 rows=6 width=20) (actual time=5.945..5.945 rows=696 loops=1)

  • Output: tah_2.timesheetid, tah_2.serialnumber
  • Buckets: 1,024 Batches: 1 Memory Usage: 44kB
  • Buffers: shared hit=10 read=4
140. 5.827 5.827 ↓ 116.0 696 1

Index Scan using ixtahaction on "CBRE_sanitized_761".timesheetapprovalhistory tah_2 (cost=0.29..586.54 rows=6 width=20) (actual time=1.021..5.827 rows=696 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: 412
  • Buffers: shared hit=10 read=4
141. 249.246 249.246 ↓ 2.0 2 681

Index Scan using ixtah2timesheetid on "CBRE_sanitized_761".timesheetapprovalhistory tah_1 (cost=0.41..2.44 rows=1 width=36) (actual time=0.363..0.366 rows=2 loops=681)

  • 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=2,535 read=247
142. 6.713 36.864 ↓ 3.6 21,006 1

Hash (cost=6,222.27..6,222.27 rows=5,818 width=115) (actual time=36.864..36.864 rows=21,006 loops=1)

  • Output: ts_9.userid, ts_9.id, tsformat_1.uri, tsformat_1.timesheetid
  • Buckets: 32,768 (originally 8192) Batches: 1 (originally 1) Memory Usage: 2,923kB
  • Buffers: shared hit=586
143. 6.715 30.151 ↓ 3.6 21,006 1

Hash Join (cost=690.19..6,222.27 rows=5,818 width=115) (actual time=6.097..30.151 rows=21,006 loops=1)

  • Output: ts_9.userid, ts_9.id, tsformat_1.uri, tsformat_1.timesheetid
  • Inner Unique: true
  • Hash Cond: (tsformat_1.timesheetid = ts_9.id)
  • Buffers: shared hit=586
144. 17.490 17.490 ↓ 3.6 21,006 1

Index Scan using ixtspss2key on "CBRE_sanitized_761".timesheetpolicysettingssnapshot tsformat_1 (cost=0.55..5,517.37 rows=5,818 width=95) (actual time=0.035..17.490 rows=21,006 loops=1)

  • 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: (upper(tsformat_1.key) = 'URN:REPLICON:POLICY:TIMESHEET:TIMESHEET-FORMAT'::text)
  • Buffers: shared hit=369
145. 3.341 5.946 ↑ 1.0 21,006 1

Hash (cost=427.06..427.06 rows=21,006 width=20) (actual time=5.946..5.946 rows=21,006 loops=1)

  • Output: ts_9.userid, ts_9.id
  • Buckets: 32,768 Batches: 1 Memory Usage: 1,323kB
  • Buffers: shared hit=217
146. 2.605 2.605 ↑ 1.0 21,006 1

Seq Scan on "CBRE_sanitized_761".timesheet ts_9 (cost=0.00..427.06 rows=21,006 width=20) (actual time=0.005..2.605 rows=21,006 loops=1)

  • Output: ts_9.userid, ts_9.id
  • Buffers: shared hit=217
147. 4.176 74.880 ↑ 1.0 21,006 1

Hash (cost=427.06..427.06 rows=21,006 width=24) (actual time=74.880..74.880 rows=21,006 loops=1)

  • Output: ts.startdate, ts.enddate, ts.id
  • Buckets: 32,768 Batches: 1 Memory Usage: 1,405kB
  • Buffers: shared hit=5 read=212
148. 70.704 70.704 ↑ 1.0 21,006 1

Seq Scan on "CBRE_sanitized_761".timesheet ts (cost=0.00..427.06 rows=21,006 width=24) (actual time=1.008..70.704 rows=21,006 loops=1)

  • Output: ts.startdate, ts.enddate, ts.id
  • Buffers: shared hit=5 read=212
149. 4.977 52.857 ↑ 1.0 21,006 1

Hash (cost=1,591.06..1,591.06 rows=21,006 width=16) (actual time=52.857..52.857 rows=21,006 loops=1)

  • Output: tslist.timesheetid
  • Buckets: 32,768 Batches: 1 Memory Usage: 1,241kB
  • Buffers: shared hit=2 read=1,379
150. 47.880 47.880 ↑ 1.0 21,006 1

Seq Scan on "CBRE_sanitized_761".dm_timesheetlist_facts tslist (cost=0.00..1,591.06 rows=21,006 width=16) (actual time=0.933..47.880 rows=21,006 loops=1)

  • Output: tslist.timesheetid
  • Buffers: shared hit=2 read=1,379
151. 0.220 18.326 ↑ 1.0 867 1

Hash (cost=62.67..62.67 rows=867 width=32) (actual time=18.326..18.326 rows=867 loops=1)

  • Output: ui.lastname, ui.firstname, ui.displayname, ui.id
  • Buckets: 1,024 Batches: 1 Memory Usage: 66kB
  • Buffers: shared read=54
152. 18.106 18.106 ↑ 1.0 867 1

Seq Scan on "CBRE_sanitized_761".userinfo ui (cost=0.00..62.67 rows=867 width=32) (actual time=2.942..18.106 rows=867 loops=1)

  • Output: ui.lastname, ui.firstname, ui.displayname, ui.id
  • Buffers: shared read=54
Planning time : 711.836 ms
Execution time : 4,588,650.287 ms