explain.depesz.com

PostgreSQL's explain analyze made readable

Result: SiO6

Settings
# exclusive inclusive rows x rows loops node
1. 0.168 5,333,205.739 ↓ 15.0 15 1

Sort (cost=721,306.66..721,306.66 rows=1 width=2,368) (actual time=5,333,205.738..5,333,205.739 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,511,237,150 read=141,023
2. 0.032 5,333,205.571 ↓ 15.0 15 1

Nested Loop Semi Join (cost=259,273.26..721,306.65 rows=1 width=2,368) (actual time=339,959.631..5,333,205.571 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,511,237,140 read=141,023
3. 0.045 5,333,205.464 ↓ 15.0 15 1

Nested Loop Left Join (cost=259,272.98..721,305.34 rows=1 width=204) (actual time=339,959.612..5,333,205.464 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,511,237,109 read=141,023
4. 0.033 5,333,205.344 ↓ 15.0 15 1

Nested Loop Left Join (cost=259,272.71..721,305.05 rows=1 width=195) (actual time=339,959.596..5,333,205.344 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,511,237,064 read=141,023
5. 0.053 5,333,205.221 ↓ 15.0 15 1

Nested Loop (cost=259,272.27..721,304.06 rows=1 width=167) (actual time=339,959.585..5,333,205.221 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,511,237,004 read=141,023
6. 0.044 5,333,205.093 ↓ 15.0 15 1

Nested Loop Left Join (cost=259,272.00..721,303.77 rows=1 width=146) (actual time=339,959.572..5,333,205.093 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,511,236,959 read=141,023
7. 0.026 5,333,204.989 ↓ 15.0 15 1

Nested Loop Left Join (cost=259,271.85..721,301.56 rows=1 width=130) (actual time=339,959.560..5,333,204.989 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,511,236,929 read=141,023
8. 0.040 5,333,204.948 ↓ 15.0 15 1

Nested Loop Left Join (cost=259,271.70..721,300.36 rows=1 width=189) (actual time=339,959.555..5,333,204.948 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,511,236,929 read=141,023
9. 0.054 5,333,204.758 ↓ 15.0 15 1

Nested Loop (cost=259,271.26..721,299.37 rows=1 width=126) (actual time=339,959.528..5,333,204.758 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,511,236,869 read=141,023
10. 248.460 5,333,183.914 ↓ 15.0 15 1

Nested Loop Left Join (cost=259,270.84..721,296.93 rows=1 width=142) (actual time=339,958.168..5,333,183.914 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,511,236,822 read=141,010
11. 3.645 5,332,902.178 ↓ 49.5 2,773 1

Nested Loop Left Join (cost=259,270.41..721,270.99 rows=56 width=209) (actual time=162,371.277..5,332,902.178 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,511,226,580 read=140,996
12. 15.039 5,332,881.895 ↓ 50.4 2,773 1

Nested Loop Left Join (cost=259,269.98..721,216.62 rows=55 width=146) (actual time=162,371.263..5,332,881.895 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,511,215,459 read=140,996
13. 6.046 5,332,864.083 ↓ 50.4 2,773 1

Nested Loop Left Join (cost=259,269.69..721,199.57 rows=55 width=205) (actual time=162,371.256..5,332,864.083 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,511,215,246 read=140,996
14. 32,261.652 5,332,819.215 ↓ 50.4 2,773 1

Nested Loop (cost=259,269.25..721,145.20 rows=55 width=142) (actual time=162,371.217..5,332,819.215 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,334,837
  • Buffers: shared hit=2,511,204,125 read=140,996
15. 0.655 19.857 ↓ 237.0 237 1

Nested Loop (cost=0.70..2,345.45 rows=1 width=94) (actual time=7.351..19.857 rows=237 loops=1)

  • Output: pj.code, pj.id, pj.name, pj.clientid, ts.id, ts.userid, ts.startdate, ts.enddate
  • Buffers: shared hit=951 read=578
16. 17.069 17.069 ↓ 237.0 237 1

Index Scan using uix2tsuseridstartdate on d39c603ba5ee46da9a42069eec872cf2.timesheet ts (cost=0.42..2,343.14 rows=1 width=28) (actual time=7.334..17.069 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=240 read=578
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. 41,675.028 5,300,537.706 ↓ 3.4 1,676,530 237

Append (cost=259,268.55..710,074.55 rows=498,583 width=56) (actual time=633.656..22,365.138 rows=1,676,530 loops=237)

  • Buffers: shared hit=2,511,203,174 read=140,418
19. 206,301.886 5,257,411.527 ↓ 3.4 1,673,587 237

Subquery Scan on *SELECT* 1 (cost=259,268.55..662,391.44 rows=496,419 width=56) (actual time=633.656..22,183.171 rows=1,673,587 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,511,172,218 read=140,418
20. 3,680,996.073 5,050,598.217 ↓ 2.5 1,673,587 237

Nested Loop (cost=211,799.71..604,994.22 rows=661,892 width=140) (actual time=629.750..21,310.541 rows=1,673,587 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,511,149,663 read=140,398
21. 1.659 1.659 ↑ 1.0 1 237

Seq Scan on d39c603ba5ee46da9a42069eec872cf2.projectsysteminformation psi (cost=0.00..1.01 rows=1 width=32) (actual time=0.006..0.007 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=236 read=1
22. 63,393.708 1,369,600.485 ↓ 2.5 1,673,587 237

Nested Loop (cost=211,799.71..576,862.80 rows=661,892 width=215) (actual time=629.742..5,778.905 rows=1,673,587 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,511,149,427 read=140,397
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,306,206.303 ↓ 2.5 1,673,587 237

Gather (cost=211,799.71..570,242.87 rows=661,892 width=182) (actual time=629.739..5,511.419 rows=1,673,587 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,511,149,190 read=140,397
25. 30,590.290 1,488,550.548 ↓ 2.0 557,862 711 / 3

Hash Left Join (cost=210,799.71..503,053.67 rows=275,788 width=182) (actual time=940.325..6,280.804 rows=557,862 loops=711)

  • 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,511,149,190 read=140,397
  • Worker 0: actual time=1,096.241..7283.175 rows=649,604 loops=237
  • Buffers: shared hit=968,514,737 read=42,652
  • Worker 1: actual time=1,095.026..7156.724 rows=638,138 loops=237
  • Buffers: shared hit=957,202,268 read=53,580
26. 10,461.891 1,235,131.425 ↓ 2.0 557,862 711 / 3

Nested Loop Left Join (cost=0.43..291,220.18 rows=275,788 width=119) (actual time=0.075..5,211.525 rows=557,862 loops=711)

  • Output: te.id, te.userid, te.entrydate, te.hours, te.intime, te.outtime, tembillingrate.uri
  • Buffers: shared hit=2,442,362,967 read=290
  • Worker 0: actual time=0.095..6036.185 rows=649,604 loops=237
  • Buffers: shared hit=934,166,674 read=86
  • Worker 1: actual time=0.108..5914.621 rows=638,138 loops=237
  • Buffers: shared hit=922,865,016 read=203
27. 34,749.177 34,749.177 ↓ 2.0 557,862 711 / 3

Parallel Seq Scan on d39c603ba5ee46da9a42069eec872cf2.timeentry te (cost=0.00..49,467.04 rows=275,788 width=56) (actual time=0.010..146.621 rows=557,862 loops=711)

  • 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,142
  • Buffers: shared hit=5,350,273 read=2
  • Worker 0: actual time=0.006..176.186 rows=649,604 loops=237
  • Buffers: shared hit=2,283,171
  • Worker 1: actual time=0.015..170.097 rows=638,138 loops=237
  • Buffers: shared hit=2,173,047 read=1
28. 1,189,920.357 1,189,920.357 ↑ 1.0 1 396,640,119 / 3

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

  • 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,437,012,694 read=288
  • Worker 0: actual time=0.006..0.008 rows=1 loops=153,956,144
  • Buffers: shared hit=931,883,503 read=86
  • Worker 1: actual time=0.006..0.008 rows=1 loops=151,238,797
  • Buffers: shared hit=920,691,969 read=202
29. 0.158 222,828.833 ↓ 0.0 0 475 / 3

Hash (cost=210,799.27..210,799.27 rows=1 width=79) (actual time=1,407.340..1,407.340 rows=0 loops=475)

  • Output: temdbreaktype.uri, temdbreaktype.timeentryid
  • Buckets: 1,024 Batches: 1 Memory Usage: 8kB
  • Buffers: shared hit=68,771,055 read=140,107
  • Worker 0: actual time=1,096.082..1096.082 rows=0 loops=237
  • Buffers: shared hit=34,340,479 read=42,566
  • Worker 1: actual time=1,094.852..1094.852 rows=0 loops=237
  • Buffers: shared hit=34,329,668 read=53,377
30. 222,828.675 222,828.675 ↓ 0.0 0 475 / 3

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

  • Output: temdbreaktype.uri, temdbreaktype.timeentryid
  • Index Cond: (upper(temdbreaktype.key) = 'URN:REPLICON:TIME-ENTRY-METADATA-KEY:BREAK-TYPE'::text)
  • Buffers: shared hit=68,771,055 read=140,107
  • Worker 0: actual time=1,096.081..1096.081 rows=0 loops=237
  • Buffers: shared hit=34,340,479 read=42,566
  • Worker 1: actual time=1,094.851..1094.851 rows=0 loops=237
  • Buffers: shared hit=34,329,668 read=53,377
31.          

SubPlan (for Subquery Scan)

32. 511.054 511.054 ↓ 1.0 1,986,013 2

Seq Scan on d39c603ba5ee46da9a42069eec872cf2.timeentry timeentry14 (cost=0.00..42,433.74 rows=1,985,874 width=16) (actual time=0.012..255.527 rows=1,986,013 loops=2)

  • Output: timeentry14.id
  • Buffers: shared hit=45,130 read=20
33. 0.370 0.370 ↑ 1.0 2,158 1

Seq Scan on d39c603ba5ee46da9a42069eec872cf2.timeoffs timeoffs15 (cost=0.00..64.93 rows=2,193 width=4) (actual time=0.008..0.370 rows=2,158 loops=1)

  • Output: timeoffs15.id
  • Buffers: shared hit=43
34. 1,156.560 1,451.151 ↓ 1.4 2,943 237

Subquery Scan on *SELECT* 2 (cost=47,561.18..47,683.11 rows=2,164 width=56) (actual time=3.922..6.123 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=30,956
35. 185.030 294.591 ↓ 1.0 2,943 237

Hash Join (cost=92.34..171.00 rows=2,885 width=140) (actual time=0.011..1.243 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. 108.783 108.783 ↓ 1.0 2,943 237

Seq Scan on d39c603ba5ee46da9a42069eec872cf2.timeoffentries toe (cost=0.00..71.08 rows=2,885 width=8) (actual time=0.005..0.459 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.245 0.778 ↑ 1.0 2,158 1

Hash (cost=64.93..64.93 rows=2,193 width=8) (actual time=0.778..0.778 rows=2,158 loops=1)

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

Seq Scan on d39c603ba5ee46da9a42069eec872cf2.timeoffs toff (cost=0.00..64.93 rows=2,193 width=8) (actual time=0.005..0.533 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. 33.276 33.276 ↑ 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.012..0.012 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,242 read=14
43. 20.790 20.790 ↑ 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=1.386..1.386 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=47 read=13
44. 0.150 0.150 ↓ 0.0 0 15

Index Scan using ixtemtimeentryid on d39c603ba5ee46da9a42069eec872cf2.timeentrymetadata timeentrymetadata11 (cost=0.43..0.98 rows=1 width=79) (actual time=0.010..0.010 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.060 0.060 ↑ 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.004..0.004 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.090 0.090 ↓ 0.0 0 15

Index Scan using ixtemtimeentryid on d39c603ba5ee46da9a42069eec872cf2.timeentrymetadata timeentrymetadata4 (cost=0.43..0.98 rows=1 width=60) (actual time=0.006..0.006 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.075 0.075 ↑ 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.005..0.005 rows=1 loops=15)

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