explain.depesz.com

PostgreSQL's explain analyze made readable

Result: N64Y

Settings
# exclusive inclusive rows x rows loops node
1. 0.000 72,840.649 ↓ 0.0 0 1

Nested Loop (cost=2.54..51,625.96 rows=1 width=4) (actual time=72,840.649..72,840.649 rows=0 loops=1)

  • Output: userinfo0.id
  • Buffers: shared hit=922754
2. 0.002 72,840.649 ↓ 0.0 0 1

Nested Loop Semi Join (cost=2.26..51,623.65 rows=1 width=4) (actual time=72,840.648..72,840.649 rows=0 loops=1)

  • Output: userinfo0.id
  • Buffers: shared hit=922754
3. 0.013 0.013 ↑ 1.0 1 1

Index Only Scan using userinfo_pkey on pikeg3.userinfo userinfo0 (cost=0.28..2.30 rows=1 width=4) (actual time=0.013..0.013 rows=1 loops=1)

  • Output: userinfo0.id
  • Index Cond: (userinfo0.id = 6127)
  • Heap Fetches: 1
  • Buffers: shared hit=4
4. 0.001 72,840.634 ↓ 0.0 0 1

Nested Loop Semi Join (cost=1.98..51,621.34 rows=1 width=4) (actual time=72,840.634..72,840.634 rows=0 loops=1)

  • Output: userinfo2.id
  • Buffers: shared hit=922750
5. 0.008 0.008 ↑ 1.0 1 1

Index Only Scan using userinfo_pkey on pikeg3.userinfo userinfo2 (cost=0.28..2.30 rows=1 width=4) (actual time=0.007..0.008 rows=1 loops=1)

  • Output: userinfo2.id
  • Index Cond: (userinfo2.id = 6127)
  • Heap Fetches: 1
  • Buffers: shared hit=4
6. 0.117 72,840.625 ↓ 0.0 0 1

Nested Loop Semi Join (cost=1.69..51,619.03 rows=1 width=4) (actual time=72,840.625..72,840.625 rows=0 loops=1)

  • Output: timepunch3.userid
  • Join Filter: (((timesheet5.startdate + '00:00:00'::time without time zone) <= malizedtimepunchlocaldatetime4.entrydatetime) AND (malizedtimepunchlocaldatetime4.entrydatetime < ((timesheet5.enddate + 1) + '00:00:00'::time without time zone)))
  • Buffers: shared hit=922746
7. 0.259 0.983 ↓ 55.0 55 1

Nested Loop (cost=0.84..4.74 rows=1 width=12) (actual time=0.034..0.983 rows=55 loops=1)

  • Output: timepunch3.userid, malizedtimepunchlocaldatetime4.entrydatetime
  • Inner Unique: true
  • Buffers: shared hit=231
8. 0.174 0.174 ↓ 55.0 55 1

Index Scan using timepunch_useridpunchtimeutc on pikeg3.timepunch timepunch3 (cost=0.42..2.30 rows=1 width=20) (actual time=0.021..0.174 rows=55 loops=1)

  • Output: timepunch3.id, timepunch3.slug, timepunch3.userid, timepunch3.activityid, timepunch3.projectid, timepunch3.taskid, timepunch3.breaktypeid, timepunch3.billingrateid, timepunch3.punchtimeutc, timepunch3.punchaction, timepunch3.isofflinepunch, timepunch3.rawtimepunchid, timepunch3.clientid, timepunch3.isbillable
  • Index Cond: (timepunch3.userid = 6127)
  • Buffers: shared hit=11
9. 0.550 0.550 ↑ 1.0 1 55

Index Scan using denormalizedtimepunchlocaldatetime_facts_pkey on pikeg3.denormalizedtimepunchlocaldatetime malizedtimepunchlocaldatetime4 (cost=0.42..2.44 rows=1 width=24) (actual time=0.010..0.010 rows=1 loops=55)

  • Output: malizedtimepunchlocaldatetime4.timepunchid, malizedtimepunchlocaldatetime4.entrydatetime
  • Index Cond: (malizedtimepunchlocaldatetime4.timepunchid = timepunch3.id)
  • Buffers: shared hit=220
10. 0.055 72,839.525 ↓ 0.0 0 55

Nested Loop (cost=0.85..51,614.26 rows=1 width=12) (actual time=1,324.355..1,324.355 rows=0 loops=55)

  • Output: timesheet5.userid, timesheet5.startdate, timesheet5.enddate
  • Inner Unique: true
  • Buffers: shared hit=922515
11. 1,491.490 72,839.470 ↓ 0.0 0 55

Subquery Scan on timesheetlastapprovalaction6 (cost=0.43..51,597.08 rows=7 width=16) (actual time=1,324.354..1,324.354 rows=0 loops=55)

  • Output: timesheetlastapprovalaction6.timesheetid, timesheetlastapprovalaction6.action, timesheetlastapprovalaction6.approvalagenttype, timesheetlastapprovalaction6.userid, timesheetlastapprovalaction6.systemprocessidentifier, timesheetlastapprovalaction6.timestamputc, ta.serialnumber
  • Filter: ((timesheetlastapprovalaction6.action = 4) AND (timesheetlastapprovalaction6.userid = 2593))
  • Rows Removed by Filter: 312239
  • Buffers: shared hit=922515
12. 6,937.480 71,347.980 ↓ 1.1 312,239 55

Unique (cost=0.43..47,373.21 rows=281,592 width=72) (actual time=0.010..1,297.236 rows=312,239 loops=55)

  • Output: ta.timesheetid, ta.action, NULL::integer, ta.userid, NULL::text, NULL::timestamp without time zone, ta.serialnumber
  • Buffers: shared hit=922515
13. 64,410.500 64,410.500 ↑ 1.0 1,227,073 55

Index Scan using ixtah2timesheetid on pikeg3.timesheetapprovalhistory ta (cost=0.43..44,305.52 rows=1,227,073 width=72) (actual time=0.010..1,171.100 rows=1,227,073 loops=55)

  • Output: ta.timesheetid, ta.action, NULL::integer, ta.userid, NULL::text, NULL::timestamp without time zone, ta.serialnumber
  • Buffers: shared hit=922515
14. 0.000 0.000 ↓ 0.0 0

Index Scan using timesheet_pkey on pikeg3.timesheet timesheet5 (cost=0.42..2.44 rows=1 width=28) (never executed)

  • Output: timesheet5.id, timesheet5.userid, timesheet5.startdate, timesheet5.enddate, timesheet5.approvalstatus, timesheet5.duedate, timesheet5.autosubmitdatetimeutc, timesheet5.lastautosubmitattemptdatetimeutc, timesheet5.createdonutc
  • Index Cond: (timesheet5.id = timesheetlastapprovalaction6.timesheetid)
  • Filter: (timesheet5.userid = 6127)
15. 0.000 0.000 ↓ 0.0 0

Index Only Scan using login_pkey on pikeg3.login login1 (cost=0.28..2.30 rows=1 width=4) (never executed)

  • Output: login1.userid
  • Index Cond: (login1.userid = 6127)
  • Heap Fetches: 0
Planning time : 0.748 ms
Execution time : 72,840.746 ms