explain.depesz.com

PostgreSQL's explain analyze made readable

Result: mY2m

Settings
# exclusive inclusive rows x rows loops node
1. 0.089 5,299,016.570 ↓ 15.0 15 1

Sort (cost=715,517.34..715,517.35 rows=1 width=2,368) (actual time=5,299,016.568..5,299,016.570 rows=15 loops=1)

  • Output: ((cl.name)::character varying(255)), cl.id, ((pj.code)::character varying(50)), pj.id, ((pj.name)::character varying(255)), ((ui.externalid)::character varying(255)), ui.id, ((ui.info5)::character varying(255)), "*SELECT* 1".entrydate, ((timeentrymetadata4.text)::text), ((billingrate5.name)::character varying(50)), "*SELECT* 1".workduration, "*SELECT* 1".userid
  • Sort Key: ((cl.name)::character varying(255)) COLLATE "en_US", ((pj.code)::character varying(50)) COLLATE "en_US", ((pj.name)::character varying(255)) COLLATE "en_US", ((ui.externalid)::character varying(255)) COLLATE "en_US", ((ui.info5)::character varying(255)) COLLATE "en_US", "*SELECT* 1".entrydate, ((timeentrymetadata4.text)::text) COLLATE "en_US", ((billingrate5.name)::character varying(50)) COLLATE "en_US
  • Sort Method: quicksort Memory: 28kB
  • Buffers: shared hit=2,510,015,813
2. 0.037 5,299,016.481 ↓ 15.0 15 1

Nested Loop Semi Join (cost=256,371.04..715,517.33 rows=1 width=2,368) (actual time=199,783.186..5,299,016.481 rows=15 loops=1)

  • Output: cl.name, cl.id, pj.code, pj.id, pj.name, ui.externalid, ui.id, ui.info5, "*SELECT* 1".entrydate, timeentrymetadata4.text, billingrate5.name, "*SELECT* 1".workduration, "*SELECT* 1".userid
  • Buffers: shared hit=2,510,015,807
3. 0.041 5,299,016.384 ↓ 15.0 15 1

Nested Loop Left Join (cost=256,370.76..715,516.03 rows=1 width=204) (actual time=199,783.172..5,299,016.384 rows=15 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, pj.code, pj.id, pj.name, cl.name, cl.id, ui.externalid, ui.id, ui.info5, timeentrymetadata4.text, billingrate5.name
  • Inner Unique: true
  • Buffers: shared hit=2,510,015,776
4. 0.040 5,299,016.268 ↓ 15.0 15 1

Nested Loop Left Join (cost=256,370.49..715,515.74 rows=1 width=195) (actual time=199,783.157..5,299,016.268 rows=15 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".billingrateid, pj.code, pj.id, pj.name, cl.name, cl.id, ui.externalid, ui.id, ui.info5, timeentrymetadata4.text
  • Buffers: shared hit=2,510,015,731
5. 0.045 5,299,016.153 ↓ 15.0 15 1

Nested Loop (cost=256,370.06..715,514.75 rows=1 width=167) (actual time=199,783.145..5,299,016.153 rows=15 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".timeentryid, "*SELECT* 1".billingrateid, pj.code, pj.id, pj.name, cl.name, cl.id, ui.externalid, ui.id, ui.info5
  • Inner Unique: true
  • Buffers: shared hit=2,510,015,671
6. 0.053 5,299,016.033 ↓ 15.0 15 1

Nested Loop Left Join (cost=256,369.78..715,514.45 rows=1 width=146) (actual time=199,783.132..5,299,016.033 rows=15 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".timeentryid, "*SELECT* 1".billingrateid, pj.code, pj.id, pj.name, ts.userid, cl.name, cl.id
  • Inner Unique: true
  • Buffers: shared hit=2,510,015,626
7. 0.023 5,299,015.935 ↓ 15.0 15 1

Nested Loop Left Join (cost=256,369.64..715,512.24 rows=1 width=130) (actual time=199,783.122..5,299,015.935 rows=15 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".timeentryid, "*SELECT* 1".billingrateid, pj.code, pj.id, pj.name, pj.clientid, ts.userid, clients12.id
  • Inner Unique: true
  • Buffers: shared hit=2,510,015,596
8. 0.032 5,299,015.897 ↓ 15.0 15 1

Nested Loop Left Join (cost=256,369.48..715,511.04 rows=1 width=189) (actual time=199,783.116..5,299,015.897 rows=15 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".timeentryid, "*SELECT* 1".billingrateid, pj.code, pj.id, pj.name, pj.clientid, ts.userid, timeentrymetadata11.uri
  • Buffers: shared hit=2,510,015,596
9. 0.039 5,299,015.760 ↓ 15.0 15 1

Nested Loop (cost=256,369.05..715,510.05 rows=1 width=126) (actual time=199,783.092..5,299,015.760 rows=15 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".timeentryid, "*SELECT* 1".billingrateid, pj.code, pj.id, pj.name, pj.clientid, ts.userid
  • Inner Unique: true
  • Buffers: shared hit=2,510,015,536
10. 251.671 5,299,015.601 ↓ 15.0 15 1

Nested Loop Left Join (cost=256,368.63..715,507.61 rows=1 width=142) (actual time=199,783.071..5,299,015.601 rows=15 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".timeentryid, "*SELECT* 1".billingrateid, pj.code, pj.id, pj.name, pj.clientid, ts.id, ts.userid
  • Inner Unique: true
  • Filter: (pj.id = COALESCE(project7.id, task9.projectid))
  • Rows Removed by Filter: 2,758
  • Buffers: shared hit=2,510,015,476
11. 4.367 5,298,750.065 ↓ 50.4 2,773 1

Nested Loop Left Join (cost=256,368.20..715,482.13 rows=55 width=209) (actual time=16,010.229..5,298,750.065 rows=2,773 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".timeentryid, "*SELECT* 1".billingrateid, project7.id, timeentrymetadata8.uri, pj.code, pj.id, pj.name, pj.clientid, ts.id, ts.userid
  • Buffers: shared hit=2,510,005,220
12. 15.252 5,298,729.060 ↓ 50.4 2,773 1

Nested Loop Left Join (cost=256,367.76..715,427.77 rows=55 width=146) (actual time=16,010.216..5,298,729.060 rows=2,773 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".timeentryid, "*SELECT* 1".billingrateid, project7.id, pj.code, pj.id, pj.name, pj.clientid, ts.id, ts.userid
  • Inner Unique: true
  • Buffers: shared hit=2,509,994,099
13. 7.685 5,298,711.035 ↓ 50.4 2,773 1

Nested Loop Left Join (cost=256,367.47..715,410.72 rows=55 width=205) (actual time=16,010.204..5,298,711.035 rows=2,773 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".timeentryid, "*SELECT* 1".billingrateid, timeentrymetadata6.uri, pj.code, pj.id, pj.name, pj.clientid, ts.id, ts.userid
  • Buffers: shared hit=2,509,993,886
14. 33,240.210 5,298,664.528 ↓ 50.4 2,773 1

Nested Loop (cost=256,367.03..715,356.36 rows=55 width=142) (actual time=16,010.163..5,298,664.528 rows=2,773 loops=1)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".timeentryid, "*SELECT* 1".billingrateid, pj.code, pj.id, pj.name, pj.clientid, ts.id, ts.userid
  • Join Filter: (("*SELECT* 1".entrydate >= ts.startdate) AND ("*SELECT* 1".entrydate <= ts.enddate) AND (ts.userid = "*SELECT* 1".userid))
  • Rows Removed by Join Filter: 397,345,265
  • Buffers: shared hit=2,509,982,765
15. 0.643 6.931 ↓ 237.0 237 1

Nested Loop (cost=0.70..2,347.82 rows=1 width=94) (actual time=0.039..6.931 rows=237 loops=1)

  • Output: pj.code, pj.id, pj.name, pj.clientid, ts.id, ts.userid, ts.startdate, ts.enddate
  • Buffers: shared hit=1,528
16. 4.155 4.155 ↓ 237.0 237 1

Index Scan using uix2tsuseridstartdate on d39c603ba5ee46da9a42069eec872cf2.timesheet ts (cost=0.42..2,345.51 rows=1 width=28) (actual time=0.030..4.155 rows=237 loops=1)

  • Output: ts.id, ts.userid, ts.startdate, ts.enddate, ts.approvalstatus, ts.duedate, ts.autosubmitdatetimeutc, ts.lastautosubmitattemptdatetimeutc, ts.createdonutc
  • Index Cond: ((ts.startdate >= '2020-08-15'::date) AND (ts.startdate <= '2020-08-21'::date))
  • Filter: ((ts.enddate >= '2020-08-15'::date) AND (ts.enddate <= '2020-08-21'::date))
  • Buffers: shared hit=817
17. 2.133 2.133 ↑ 1.0 1 237

Index Scan using project_pkey on d39c603ba5ee46da9a42069eec872cf2.project pj (cost=0.28..2.30 rows=1 width=66) (actual time=0.007..0.009 rows=1 loops=237)

  • Output: pj.code, pj.id, pj.name, pj.clientid
  • Index Cond: (pj.id = 2,805)
  • Buffers: shared hit=711
18. 43,913.730 5,265,417.387 ↓ 3.4 1,676,574 237

Append (cost=256,366.33..704,281.52 rows=498,687 width=56) (actual time=6.185..22,216.951 rows=1,676,574 loops=237)

  • Buffers: shared hit=2,509,981,237
19. 271,266.613 5,219,926.422 ↓ 3.4 1,673,631 237

Subquery Scan on *SELECT* 1 (cost=256,366.33..659,524.16 rows=496,480 width=56) (actual time=6.184..22,025.006 rows=1,673,631 loops=237)

  • Output: "*SELECT* 1".entrydate, "*SELECT* 1".workduration, "*SELECT* 1".userid, "*SELECT* 1".timeentryid, "*SELECT* 1".billingrateid
  • Filter: ((hashed SubPlan 1) OR (hashed SubPlan 2))
  • Buffers: shared hit=2,509,963,000
20. 3,732,682.929 4,948,034.097 ↓ 2.5 1,673,631 237

Nested Loop (cost=211,824.23..605,052.46 rows=661,973 width=140) (actual time=1.945..20,877.781 rows=1,673,631 loops=237)

  • Output: te.id, NULL::integer, te.userid, te.entrydate, NULL::time without time zone, NULL::time without time zone, NULL::interval, CASE WHEN (tembillingrate.uri IS NULL) THEN NULL::uuid WHEN (tembillingrate.uri = 'urn:replicon:project-specific-billing-rate'::text) THEN psi.projectcustombillingrateid WHEN (tembillingrate.uri = 'urn:replicon:user-specific-billing-rate'::text) THEN psi.usercustombillingrateid ELSE ("substring"(tembillingrate.uri, concat('^urn:replicon-tenant:', si.tenantslug, ':company-billing-rate:(.*)$')))::uuid END, NULL::integer, NULL::interval, NULL::integer, CASE WHEN (temdbreaktype.uri IS NULL) THEN CASE WHEN (te.hours IS NOT NULL) THEN te.hours WHEN ((te.intime IS NULL) OR (te.outtime IS NULL)) THEN NULL::interval WHEN ((te.outtime - te.intime) >= '00:00:00'::interval) THEN (te.outtime - te.intime) ELSE (('24:00:00'::interval + (te.outtime)::interval) - (te.intime)::interval) END ELSE NULL::interval END, NULL::interval, NULL::integer, NULL::integer
  • Buffers: shared hit=2,509,953,116
21. 0.474 0.474 ↑ 1.0 1 237

Seq Scan on d39c603ba5ee46da9a42069eec872cf2.projectsysteminformation psi (cost=0.00..1.01 rows=1 width=32) (actual time=0.001..0.002 rows=1 loops=237)

  • Output: psi.usercustombillingrateid, psi.projectcustombillingrateid, psi.defaultprojectstatuslabelid, psi.defaultinvoicecompanyaddressid, psi.defaultbillingratesfornewclients, psi.billingprocesstype, psi.projectworkflowmode, psi.defaultinvoicetemplateid, psi.resourcingdatasource, psi.projectnameunique, psi.projectcoderequiredandunique, psi.clientnameunique, psi.clientcoderequiredandunique
  • Buffers: shared hit=237
22. 65,543.061 1,215,350.694 ↓ 2.5 1,673,631 237

Nested Loop (cost=211,824.23..576,917.60 rows=661,973 width=215) (actual time=1.941..5,128.062 rows=1,673,631 loops=237)

  • Output: te.id, te.userid, te.entrydate, te.hours, te.intime, te.outtime, tembillingrate.uri, temdbreaktype.uri, si.tenantslug
  • Buffers: shared hit=2,509,952,879
23. 0.474 0.474 ↑ 1.0 1 237

Seq Scan on d39c603ba5ee46da9a42069eec872cf2.systeminformation si (cost=0.00..1.01 rows=1 width=33) (actual time=0.001..0.002 rows=1 loops=237)

  • Output: si.rootuserid, si.basecurrencyid, si.basecurrencysymbol, si.defaulttimesheetapprovalpathid, si.defaultexpenseapprovalpathid, si.defaulttimeoffapprovalpathid, si.defaultlanguageid, si.buildnumber, si.isreleaseversion, si.systemguid, si.systemtimezoneid, si.databaseguid, si.uncategorizedskillcategoryid, si.newuserdefaulttimezoneid, si.defaultholidaycalendarid, si.defaultofficescheduleid, si.customlogouri, si.tenantslug, si.databaseupdatescriptstage, si.defaulttimesheetperiodid, si.defaulttimeentryapprovalpathid
  • Buffers: shared hit=237
24. 0.000 1,149,807.159 ↓ 2.5 1,673,631 237

Gather (cost=211,824.23..570,296.86 rows=661,973 width=182) (actual time=1.938..4,851.507 rows=1,673,631 loops=237)

  • Output: te.id, te.userid, te.entrydate, te.hours, te.intime, te.outtime, tembillingrate.uri, temdbreaktype.uri
  • Workers Planned: 2
  • Workers Launched: 2
  • Buffers: shared hit=2,509,952,642
25. 31,833.282 1,368,052.140 ↓ 2.0 558,663 710 / 3

Hash Left Join (cost=210,824.23..503,099.56 rows=275,822 width=182) (actual time=310.000..5,780.502 rows=558,663 loops=710)

  • Output: te.id, te.userid, te.entrydate, te.hours, te.intime, te.outtime, tembillingrate.uri, temdbreaktype.uri
  • Hash Cond: (te.id = temdbreaktype.timeentryid)
  • Buffers: shared hit=2,509,952,642
  • Worker 0: actual time=465.363..6776.022 rows=653,424 loops=237
  • Buffers: shared hit=979,263,731
  • Worker 1: actual time=463.377..6856.494 rows=661,152 loops=236
  • Buffers: shared hit=981,614,270
26. 36,468.516 1,262,879.840 ↓ 2.0 558,663 710 / 3

Nested Loop Left Join (cost=0.43..291,241.42 rows=275,822 width=119) (actual time=0.072..5,336.112 rows=558,663 loops=710)

  • Output: te.id, te.userid, te.entrydate, te.hours, te.intime, te.outtime, tembillingrate.uri
  • Buffers: shared hit=2,441,170,625
  • Worker 0: actual time=0.099..6156.360 rows=653,424 loops=237
  • Buffers: shared hit=944,872,705
  • Worker 1: actual time=0.098..6236.323 rows=661,152 loops=236
  • Buffers: shared hit=947,368,355
27. 36,459.683 36,459.683 ↓ 2.0 558,663 710 / 3

Parallel Seq Scan on d39c603ba5ee46da9a42069eec872cf2.timeentry te (cost=0.00..49,470.01 rows=275,822 width=56) (actual time=0.005..154.055 rows=558,663 loops=710)

  • Output: te.id, te.userid, te.entrydate, te.timeallocationtype, te.hours, te.intime, te.outtime, te.approvalstatus
  • Filter: (((te.timeallocationtype <> 2) OR (te.timeallocationtype IS NULL)) AND (CASE WHEN (te.hours IS NOT NULL) THEN te.hours WHEN ((te.intime IS NULL) OR (te.outtime IS NULL)) THEN NULL::interval WHEN ((te.outtime - te.intime) >= '00:00:00'::interval) THEN (te.outtime - te.intime) ELSE (('24:00:00'::interval + (te.outtime)::interval) - (te.intime)::interval) END >= '00:00:00.036'::interval))
  • Rows Removed by Filter: 104,313
  • Buffers: shared hit=5,350,275
  • Worker 0: actual time=0.007..183.250 rows=653,424 loops=237
  • Buffers: shared hit=2,216,343
  • Worker 1: actual time=0.006..187.363 rows=661,152 loops=236
  • Buffers: shared hit=2,295,940
28. 1,189,951.641 1,189,951.641 ↑ 1.0 1 396,650,547 / 3

Index Scan using ixtemtimeentryid on d39c603ba5ee46da9a42069eec872cf2.timeentrymetadata tembillingrate (cost=0.43..0.87 rows=1 width=79) (actual time=0.006..0.009 rows=1 loops=396,650,547)

  • Output: tembillingrate.id, tembillingrate.timeentryid, tembillingrate.parentid, tembillingrate.index, tembillingrate.key, tembillingrate.uri, tembillingrate.slug, tembillingrate."boolean", tembillingrate.date, tembillingrate.number, tembillingrate.text, tembillingrate."time", tembillingrate.timespan, tembillingrate.daterange_startdate, tembillingrate.daterange_enddate, tembillingrate.daterange_relativedaterangeuri, tembillingrate.daterange_relativedaterangeasofdate, tembillingrate.workdayduration_decimalworkdays, tembillingrate.workdayduration_workdays, tembillingrate.workdayduration_hours, tembillingrate.workdayduration_minutes
  • Index Cond: (tembillingrate.timeentryid = te.id)
  • Filter: (upper(tembillingrate.key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:BILLING-RATE'::text)
  • Rows Removed by Filter: 4
  • Buffers: shared hit=2,435,820,350
  • Worker 0: actual time=0.006..0.009 rows=1 loops=154,861,554
  • Buffers: shared hit=942,656,362
  • Worker 1: actual time=0.006..0.009 rows=1 loops=156,031,969
  • Buffers: shared hit=945,072,415
29. 0.158 73,339.018 ↓ 0.0 0 474 / 3

Hash (cost=210,823.79..210,823.79 rows=1 width=79) (actual time=464.171..464.171 rows=0 loops=474)

  • Output: temdbreaktype.uri, temdbreaktype.timeentryid
  • Buckets: 1,024 Batches: 1 Memory Usage: 8kB
  • Buffers: shared hit=68,766,881
  • Worker 0: actual time=465.197..465.197 rows=0 loops=237
  • Buffers: shared hit=34,383,442
  • Worker 1: actual time=463.211..463.212 rows=0 loops=236
  • Buffers: shared hit=34,238,363
30. 73,338.860 73,338.860 ↓ 0.0 0 474 / 3

Index Scan using ixtem2timeentryid on d39c603ba5ee46da9a42069eec872cf2.timeentrymetadata temdbreaktype (cost=0.56..210,823.79 rows=1 width=79) (actual time=464.170..464.170 rows=0 loops=474)

  • Output: temdbreaktype.uri, temdbreaktype.timeentryid
  • Index Cond: (upper(temdbreaktype.key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:BREAK-TYPE'::text)
  • Buffers: shared hit=68,766,881
  • Worker 0: actual time=465.196..465.196 rows=0 loops=237
  • Buffers: shared hit=34,383,442
  • Worker 1: actual time=463.210..463.210 rows=0 loops=236
  • Buffers: shared hit=34,238,363
31.          

SubPlan (for Subquery Scan)

32. 625.340 625.340 ↓ 1.0 1,986,131 2

Index Only Scan using timeentry_pkey on d39c603ba5ee46da9a42069eec872cf2.timeentry timeentry14 (cost=0.43..39,527.82 rows=1,986,093 width=16) (actual time=0.053..312.670 rows=1,986,131 loops=2)

  • Output: timeentry14.id
  • Heap Fetches: 36,210
  • Buffers: shared hit=19,768
33. 0.372 0.372 ↑ 1.0 2,158 1

Index Only Scan using timeoffs_pkey on d39c603ba5ee46da9a42069eec872cf2.timeoffs timeoffs15 (cost=0.28..43.65 rows=2,158 width=4) (actual time=0.049..0.372 rows=2,158 loops=1)

  • Output: timeoffs15.id
  • Heap Fetches: 50
  • Buffers: shared hit=15
34. 1,281.696 1,577.235 ↓ 1.3 2,943 237

Subquery Scan on *SELECT* 2 (cost=44,633.65..44,757.36 rows=2,207 width=56) (actual time=4.462..6.655 rows=2,943 loops=237)

  • Output: "*SELECT* 2".entrydate, "*SELECT* 2".workduration, "*SELECT* 2".userid, "*SELECT* 2".timeentryid, "*SELECT* 2".billingrateid
  • Filter: ((hashed SubPlan 1) OR (hashed SubPlan 2))
  • Buffers: shared hit=18,237
35. 185.551 295.539 ↑ 1.0 2,943 237

Hash Join (cost=91.56..171.12 rows=2,943 width=140) (actual time=0.011..1.247 rows=2,943 loops=237)

  • Output: NULL::uuid, toff.id, toff.userid, toe.entrydate, NULL::time without time zone, NULL::time without time zone, NULL::interval, NULL::uuid, NULL::integer, NULL::interval, NULL::integer, NULL::interval, NULL::interval, NULL::integer, NULL::integer
  • Inner Unique: true
  • Hash Cond: (toe.timeoffid = toff.id)
  • Buffers: shared hit=8,338
36. 109.257 109.257 ↑ 1.0 2,943 237

Seq Scan on d39c603ba5ee46da9a42069eec872cf2.timeoffentries toe (cost=0.00..71.83 rows=2,943 width=8) (actual time=0.005..0.461 rows=2,943 loops=237)

  • Output: toe.id, toe.timeoffid, toe.entrydate, toe.duration, toe.timein, toe.timeout, toe.isreportable, toe.workdayduration, toe.entryid
  • Filter: (toe.duration >= '00:00:00.036'::interval)
  • Rows Removed by Filter: 3
  • Buffers: shared hit=8,295
37. 0.313 0.731 ↑ 1.0 2,158 1

Hash (cost=64.58..64.58 rows=2,158 width=8) (actual time=0.731..0.731 rows=2,158 loops=1)

  • Output: toff.id, toff.userid
  • Buckets: 4,096 Batches: 1 Memory Usage: 117kB
  • Buffers: shared hit=43
38. 0.418 0.418 ↑ 1.0 2,158 1

Seq Scan on d39c603ba5ee46da9a42069eec872cf2.timeoffs toff (cost=0.00..64.58 rows=2,158 width=8) (actual time=0.005..0.418 rows=2,158 loops=1)

  • Output: toff.id, toff.userid
  • Buffers: shared hit=43
39. 38.822 38.822 ↓ 0.0 0 2,773

Index Scan using ixtemtimeentryid on d39c603ba5ee46da9a42069eec872cf2.timeentrymetadata timeentrymetadata6 (cost=0.43..0.98 rows=1 width=79) (actual time=0.014..0.014 rows=0 loops=2,773)

  • Output: timeentrymetadata6.id, timeentrymetadata6.timeentryid, timeentrymetadata6.parentid, timeentrymetadata6.index, timeentrymetadata6.key, timeentrymetadata6.uri, timeentrymetadata6.slug, timeentrymetadata6."boolean", timeentrymetadata6.date, timeentrymetadata6.number, timeentrymetadata6.text, timeentrymetadata6."time", timeentrymetadata6.timespan, timeentrymetadata6.daterange_startdate, timeentrymetadata6.daterange_enddate, timeentrymetadata6.daterange_relativedaterangeuri, timeentrymetadata6.daterange_relativedaterangeasofdate, timeentrymetadata6.workdayduration_decimalworkdays, timeentrymetadata6.workdayduration_workdays, timeentrymetadata6.workdayduration_hours, timeentrymetadata6.workdayduration_minutes
  • Index Cond: ("*SELECT* 1".timeentryid = timeentrymetadata6.timeentryid)
  • Filter: (upper(timeentrymetadata6.key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:PROJECT'::text)
  • Rows Removed by Filter: 3
  • Buffers: shared hit=11,121
40. 2.773 2.773 ↓ 0.0 0 2,773

Index Only Scan using project_pkey on d39c603ba5ee46da9a42069eec872cf2.project project7 (cost=0.29..0.31 rows=1 width=4) (actual time=0.001..0.001 rows=0 loops=2,773)

  • Output: project7.id
  • Index Cond: (project7.id = CASE WHEN ("substring"(timeentrymetadata6.uri, '^urn:replicon-tenant:d39c603ba5ee46da9a42069eec872cf2:project:(.*)$'::text) ~ '^\s*[-]?[0-9]+\s*$'::text) THEN ("substring"(timeentrymetadata6.uri, '^urn:replicon-tenant:d39c603ba5ee46da9a42069eec872cf2:project:(.*)$'::text))::integer ELSE NULL::integer END)
  • Heap Fetches: 0
  • Buffers: shared hit=213
41. 16.638 16.638 ↑ 1.0 1 2,773

Index Scan using ixtemtimeentryid on d39c603ba5ee46da9a42069eec872cf2.timeentrymetadata timeentrymetadata8 (cost=0.43..0.98 rows=1 width=79) (actual time=0.004..0.006 rows=1 loops=2,773)

  • Output: timeentrymetadata8.id, timeentrymetadata8.timeentryid, timeentrymetadata8.parentid, timeentrymetadata8.index, timeentrymetadata8.key, timeentrymetadata8.uri, timeentrymetadata8.slug, timeentrymetadata8."boolean", timeentrymetadata8.date, timeentrymetadata8.number, timeentrymetadata8.text, timeentrymetadata8."time", timeentrymetadata8.timespan, timeentrymetadata8.daterange_startdate, timeentrymetadata8.daterange_enddate, timeentrymetadata8.daterange_relativedaterangeuri, timeentrymetadata8.daterange_relativedaterangeasofdate, timeentrymetadata8.workdayduration_decimalworkdays, timeentrymetadata8.workdayduration_workdays, timeentrymetadata8.workdayduration_hours, timeentrymetadata8.workdayduration_minutes
  • Index Cond: ("*SELECT* 1".timeentryid = timeentrymetadata8.timeentryid)
  • Filter: (upper(timeentrymetadata8.key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:TASK'::text)
  • Rows Removed by Filter: 2
  • Buffers: shared hit=11,121
42. 13.865 13.865 ↑ 1.0 1 2,773

Index Scan using task_pkey on d39c603ba5ee46da9a42069eec872cf2.task task9 (cost=0.43..0.45 rows=1 width=8) (actual time=0.005..0.005 rows=1 loops=2,773)

  • Output: task9.id, task9.projectid, task9.parentid, task9.name, task9.description, task9.estimatedcost, task9.estimatedcostcurrencyid, task9.estimatedhours, task9.estimatedexpenses, task9.estimatedexpensescurrencyid, task9.expenseentrystartdate, task9.expenseentryenddate, task9.info1, task9.info2, task9.info3, task9.info4, task9.info5, task9.info6, task9.info7, task9.info8, task9.info9, task9.info10, task9.info11, task9.info12, task9.info13, task9.info14, task9.info15, task9.info16, task9.info17, task9.info18, task9.info19, task9.info20, task9.code, task9.isclosed, task9.percentcomplete, task9.istimeentryallowed, task9.timeentrystartdate, task9.timeentryenddate, task9.orderindex, task9.timeandexpenseentrytype, task9.costtype, task9.closeddate, task9.guidid, task9.uri
  • Index Cond: (CASE WHEN ("substring"(timeentrymetadata8.uri, '^urn:replicon-tenant:d39c603ba5ee46da9a42069eec872cf2:task:(.*)$'::text) ~ '^\s*[-]?[0-9]+\s*$'::text) THEN ("substring"(timeentrymetadata8.uri, '^urn:replicon-tenant:d39c603ba5ee46da9a42069eec872cf2:task:(.*)$'::text))::integer ELSE NULL::integer END = task9.id)
  • Buffers: shared hit=10,256
43. 0.120 0.120 ↑ 1.0 1 15

Index Scan using dm_timesheetlist_facts_pkey on d39c603ba5ee46da9a42069eec872cf2.dm_timesheetlist_facts tslist (cost=0.42..2.44 rows=1 width=16) (actual time=0.008..0.008 rows=1 loops=15)

  • Output: tslist.timesheetslug, tslist.timesheetstartdate, tslist.timesheetenddate, tslist.owneruserid, tslist.owneruserslug, tslist.owneruserdisplayname, tslist.owneruseremployeeid, tslist.owneruseremployeetypeid, tslist.owneruseremployeetypename, tslist.approvalstatus, tslist.timesheetstatus, tslist.totalregularhours, tslist.totalovertimehours, tslist.totaltimeoffhours, tslist.totalbillablehours, tslist.totalnonbillablehours, tslist.totalhours, tslist.totalpayablehours, tslist.totalprojecthours, tslist.totalbreakhours, tslist.totalworkinghours, tslist.ownerdepartmentid, tslist.ownerdepartmentslug, tslist.generatedonutc, tslist.duedate, tslist.historicalsupervisoruserid, tslist.historicalsupervisoruserslug, tslist.historicalsupervisoruserdisplayname, tslist.totalbillableamountinbasecurrency, tslist.waitingonapproveruserid, tslist.waitingonapproveruserslug, tslist.waitingonapproveruserdisplayname, tslist.invoicestatus, tslist.invoicedhours, tslist.invoicedamount, tslist.approvalduedate, tslist.owneruserloginname, tslist.timesheetid, tslist.totalscheduledworkhours, tslist.totalscheduledbreakhours, tslist.validationmessagecounterror, tslist.validationmessagecountwarning, tslist.validationmessagecountinfo, tslist.ownerdepartmentname, tslist.savedonutc, tslist.timesheetscriptcalculationstatustype
  • Index Cond: (tslist.timesheetid = ts.id)
  • Filter: (tslist.timesheetstatus = 2)
  • Buffers: shared hit=60
44. 0.105 0.105 ↓ 0.0 0 15

Index Scan using ixtemtimeentryid on d39c603ba5ee46da9a42069eec872cf2.timeentrymetadata timeentrymetadata11 (cost=0.43..0.98 rows=1 width=79) (actual time=0.007..0.007 rows=0 loops=15)

  • Output: timeentrymetadata11.id, timeentrymetadata11.timeentryid, timeentrymetadata11.parentid, timeentrymetadata11.index, timeentrymetadata11.key, timeentrymetadata11.uri, timeentrymetadata11.slug, timeentrymetadata11."boolean", timeentrymetadata11.date, timeentrymetadata11.number, timeentrymetadata11.text, timeentrymetadata11."time", timeentrymetadata11.timespan, timeentrymetadata11.daterange_startdate, timeentrymetadata11.daterange_enddate, timeentrymetadata11.daterange_relativedaterangeuri, timeentrymetadata11.daterange_relativedaterangeasofdate, timeentrymetadata11.workdayduration_decimalworkdays, timeentrymetadata11.workdayduration_workdays, timeentrymetadata11.workdayduration_hours, timeentrymetadata11.workdayduration_minutes
  • Index Cond: ("*SELECT* 1".timeentryid = timeentrymetadata11.timeentryid)
  • Filter: (upper(timeentrymetadata11.key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:CLIENT'::text)
  • Rows Removed by Filter: 3
  • Buffers: shared hit=60
45. 0.015 0.015 ↓ 0.0 0 15

Index Only Scan using clients_pkey on d39c603ba5ee46da9a42069eec872cf2.clients clients12 (cost=0.15..1.17 rows=1 width=4) (actual time=0.001..0.001 rows=0 loops=15)

  • Output: clients12.id
  • Index Cond: (clients12.id = CASE WHEN ("substring"(timeentrymetadata11.uri, '^urn:replicon-tenant:d39c603ba5ee46da9a42069eec872cf2:client:(.*)$'::text) ~ '^\s*[-]?[0-9]+\s*$'::text) THEN ("substring"(timeentrymetadata11.uri, '^urn:replicon-tenant:d39c603ba5ee46da9a42069eec872cf2:client:(.*)$'::text))::integer ELSE NULL::integer END)
  • Heap Fetches: 0
46. 0.045 0.045 ↑ 1.0 1 15

Index Scan using clients_pkey on d39c603ba5ee46da9a42069eec872cf2.clients cl (cost=0.14..2.16 rows=1 width=24) (actual time=0.003..0.003 rows=1 loops=15)

  • Output: cl.id, cl.name, cl.code, cl.comments, cl.disabled, cl.city, cl.stateprovince, cl.zippostalcode, cl.telephone, cl.fax, cl.website, cl.info1, cl.info2, cl.info3, cl.info4, cl.info5, cl.info6, cl.info7, cl.info8, cl.info9, cl.info10, cl.info11, cl.info12, cl.slug, cl.clientmanageruserid, cl.address, cl.country, cl.email, cl.billingcontact, cl.billingaddress, cl.billingcity, cl.billingstateprovince, cl.billingzippostalcode, cl.billingcountry, cl.billingemail, cl.billingtelephone, cl.billingfax, cl.billingwebsite, cl.defaultbillingcurrencyid, cl.guidid, cl.uniquename, cl.uniquecode, cl.taxprofileid, cl.defaultinvoicepaymentterm
  • Index Cond: (cl.id = COALESCE(clients12.id, pj.clientid))
  • Buffers: shared hit=30
47. 0.075 0.075 ↑ 1.0 1 15

Index Scan using userinfo_pkey on d39c603ba5ee46da9a42069eec872cf2.userinfo ui (cost=0.28..0.30 rows=1 width=25) (actual time=0.005..0.005 rows=1 loops=15)

  • Output: ui.id, ui.firstname, ui.lastname, ui.email, ui.startdate, ui.enddate, ui.externalid, ui.disabled, ui.info1, ui.info2, ui.info3, ui.info4, ui.info5, ui.info6, ui.info7, ui.info8, ui.info9, ui.info10, ui.info11, ui.info12, ui.info13, ui.info14, ui.info15, ui.info16, ui.info17, ui.info18, ui.info19, ui.info20, ui.info21, ui.info22, ui.info23, ui.info24, ui.info25, ui.info26, ui.info27, ui.info28, ui.info29, ui.info30, ui.info31, ui.info32, ui.info33, ui.info34, ui.info35, ui.info36, ui.info37, ui.info38, ui.info39, ui.info40, ui.info41, ui.info42, ui.info43, ui.info44, ui.info45, ui.info46, ui.info47, ui.info48, ui.info49, ui.info50, ui.languageid, ui.employeetypeid, ui.timezoneid, ui.duplicatename, ui.issampleuser, ui.slug, ui.defaultactivityid, ui.displayname, ui.guidid, ui.customdisplayname
  • Index Cond: (ui.id = "*SELECT* 1".userid)
  • Buffers: shared hit=45
48. 0.075 0.075 ↓ 0.0 0 15

Index Scan using ixtemtimeentryid on d39c603ba5ee46da9a42069eec872cf2.timeentrymetadata timeentrymetadata4 (cost=0.43..0.98 rows=1 width=60) (actual time=0.005..0.005 rows=0 loops=15)

  • Output: timeentrymetadata4.id, timeentrymetadata4.timeentryid, timeentrymetadata4.parentid, timeentrymetadata4.index, timeentrymetadata4.key, timeentrymetadata4.uri, timeentrymetadata4.slug, timeentrymetadata4."boolean", timeentrymetadata4.date, timeentrymetadata4.number, timeentrymetadata4.text, timeentrymetadata4."time", timeentrymetadata4.timespan, timeentrymetadata4.daterange_startdate, timeentrymetadata4.daterange_enddate, timeentrymetadata4.daterange_relativedaterangeuri, timeentrymetadata4.daterange_relativedaterangeasofdate, timeentrymetadata4.workdayduration_decimalworkdays, timeentrymetadata4.workdayduration_workdays, timeentrymetadata4.workdayduration_hours, timeentrymetadata4.workdayduration_minutes
  • Index Cond: ("*SELECT* 1".timeentryid = timeentrymetadata4.timeentryid)
  • Filter: (upper(timeentrymetadata4.key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:COMMENTS'::text)
  • Rows Removed by Filter: 3
  • Buffers: shared hit=60
49. 0.075 0.075 ↑ 1.0 1 15

Index Scan using billingrate_pkey on d39c603ba5ee46da9a42069eec872cf2.billingrate billingrate5 (cost=0.27..0.29 rows=1 width=41) (actual time=0.005..0.005 rows=1 loops=15)

  • Output: billingrate5.id, billingrate5.name, billingrate5.description, billingrate5.isenabled
  • Index Cond: ("*SELECT* 1".billingrateid = billingrate5.id)
  • Buffers: shared hit=45
50. 0.060 0.060 ↑ 1.0 1 15

Index Only Scan using project_pkey on d39c603ba5ee46da9a42069eec872cf2.project project13 (cost=0.28..1.30 rows=1 width=4) (actual time=0.004..0.004 rows=1 loops=15)

  • Output: project13.id
  • Index Cond: (project13.id = 2,805)
  • Heap Fetches: 0
  • Buffers: shared hit=31
Planning time : 9.091 ms
Execution time : 5,299,040.086 ms