explain.depesz.com

PostgreSQL's explain analyze made readable

Result: ms6u

Settings
# exclusive inclusive rows x rows loops node
1. 269.683 1,533.512 ↑ 690.0 1,351 1

Hash Left Join (cost=1,628.84..380,337.64 rows=932,190 width=284) (actual time=40.431..1,533.512 rows=1,351 loops=1)

  • Hash Cond: (te.id = te_isbillable.timeentryid)
2. 10.415 1,263.779 ↑ 690.0 1,351 1

Hash Left Join (cost=1,620.82..115,813.80 rows=932,190 width=283) (actual time=40.320..1,263.779 rows=1,351 loops=1)

  • Hash Cond: (("substring"(te_client.uri, (('^urn:replicon-tenant:'::text || si.tenantslug) || ':client:(.*)$'::text)))::integer = client.id)
3. 9.064 1,253.328 ↑ 690.0 1,351 1

Hash Left Join (cost=1,619.73..106,304.37 rows=932,190 width=350) (actual time=40.258..1,253.328 rows=1,351 loops=1)

  • Hash Cond: (te.id = te_client.timeentryid)
4. 10.072 1,244.199 ↑ 690.0 1,351 1

Hash Left Join (cost=1,611.70..102,793.73 rows=932,190 width=279) (actual time=40.160..1,244.199 rows=1,351 loops=1)

  • Hash Cond: (("substring"(te_timeofftype.uri, (('^urn:replicon-tenant:'::text || si.tenantslug) || ':time-off-type:(.*)$'::text)))::integer = toc.id)
5. 11.880 1,234.060 ↑ 690.0 1,351 1

Hash Left Join (cost=1,610.50..93,051.14 rows=932,190 width=346) (actual time=40.034..1,234.060 rows=1,351 loops=1)

  • Hash Cond: (te.id = te_timeofftype.timeentryid)
6. 97.472 1,222.129 ↑ 690.0 1,351 1

Hash Left Join (cost=1,602.48..89,540.50 rows=932,190 width=275) (actual time=39.960..1,222.129 rows=1,351 loops=1)

  • Hash Cond: (("substring"(te_breaktype.uri, (('^urn:replicon-tenant:'::text || si.tenantslug) || ':break-type:(.*)$'::text)))::uuid = bt.id)
7. 9.574 1,124.631 ↑ 690.0 1,351 1

Hash Left Join (cost=1,601.43..80,124.34 rows=932,190 width=330) (actual time=39.906..1,124.631 rows=1,351 loops=1)

  • Hash Cond: (te.id = te_breaktype.timeentryid)
8. 14.870 1,114.105 ↑ 690.0 1,351 1

Hash Left Join (cost=1,434.15..69,786.46 rows=932,190 width=259) (actual time=38.932..1,114.105 rows=1,351 loops=1)

  • Hash Cond: (te.id = te_billingrate.timeentryid)
9. 472.079 1,091.017 ↑ 690.0 1,351 1

Hash Left Join (cost=1,210.83..53,658.64 rows=932,190 width=188) (actual time=30.692..1,091.017 rows=1,351 loops=1)

  • Hash Cond: (("substring"(te_task.uri, (('^urn:replicon-tenant:'::text || si.tenantslug) || ':task:(.*)$'::text)))::integer = task.id)
10. 15.686 618.075 ↑ 690.0 1,351 1

Hash Left Join (cost=1,206.00..38,459.11 rows=932,190 width=255) (actual time=29.794..618.075 rows=1,351 loops=1)

  • Hash Cond: (te.id = te_task.timeentryid)
11. 248.795 593.780 ↑ 690.0 1,351 1

Hash Left Join (cost=982.44..22,193.05 rows=932,190 width=184) (actual time=21.165..593.780 rows=1,351 loops=1)

  • Hash Cond: (("substring"(te_project.uri, (('^urn:replicon-tenant:'::text || si.tenantslug) || ':project:(.*)$'::text)))::integer = proj.id)
12. 9.389 344.790 ↑ 690.0 1,351 1

Hash Join (cost=979.87..11,703.34 rows=932,190 width=247) (actual time=20.944..344.790 rows=1,351 loops=1)

  • Hash Cond: (te.userid = ui.id)
13. 12.047 334.537 ↑ 1.0 1,351 1

Hash Left Join (cost=444.10..677.05 rows=1,351 width=183) (actual time=19.903..334.537 rows=1,351 loops=1)

  • Hash Cond: (te.id = te_project.timeentryid)
14. 277.708 318.005 ↑ 1.0 1,351 1

Hash Left Join (cost=250.61..465.10 rows=1,351 width=112) (actual time=15.397..318.005 rows=1,351 loops=1)

  • Hash Cond: (("substring"(te_activity.uri, (('^urn:replicon-tenant:'::text || si.tenantslug) || ':activity:(.*)$'::text)))::integer = act.id)
15. 8.043 40.218 ↑ 1.0 1,351 1

Nested Loop (cost=249.45..449.96 rows=1,351 width=179) (actual time=14.692..40.218 rows=1,351 loops=1)

16. 0.057 0.057 ↑ 1.0 1 1

Seq Scan on systeminformation si (cost=0.00..1.01 rows=1 width=32) (actual time=0.006..0.057 rows=1 loops=1)

17. 8.564 32.118 ↑ 1.0 1,351 1

Hash Left Join (cost=249.45..435.44 rows=1,351 width=147) (actual time=14.669..32.118 rows=1,351 loops=1)

  • Hash Cond: (te.id = te_comment.timeentryid)
18. 6.901 21.451 ↑ 1.0 1,351 1

Hash Right Join (cost=70.08..240.70 rows=1,351 width=131) (actual time=12.538..21.451 rows=1,351 loops=1)

  • Hash Cond: (te_activity.timeentryid = te.id)
19. 2.081 2.369 ↑ 1.0 519 1

Bitmap Heap Scan on timeentrymetadata te_activity (cost=24.30..187.79 rows=519 width=87) (actual time=0.316..2.369 rows=519 loops=1)

  • Recheck Cond: (key = 'urn:replicon:time-entry-metadata-key:activity'::text)
  • Heap Blocks: exact=57
20. 0.288 0.288 ↑ 1.0 519 1

Bitmap Index Scan on ixtemdkey (cost=0.00..24.17 rows=519 width=0) (actual time=0.288..0.288 rows=519 loops=1)

  • Index Cond: (key = 'urn:replicon:time-entry-metadata-key:activity'::text)
21. 5.919 12.181 ↑ 1.0 1,351 1

Hash (cost=28.89..28.89 rows=1,351 width=60) (actual time=12.181..12.181 rows=1,351 loops=1)

  • Buckets: 2048 Batches: 1 Memory Usage: 111kB
22. 6.262 6.262 ↑ 1.0 1,351 1

Seq Scan on timeentry te (cost=0.00..28.89 rows=1,351 width=60) (actual time=0.023..6.262 rows=1,351 loops=1)

  • Filter: ((timeallocationtype <> 2) OR (timeallocationtype IS NULL))
23. 0.859 2.103 ↑ 1.0 186 1

Hash (cost=177.04..177.04 rows=186 width=32) (actual time=2.103..2.103 rows=186 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 22kB
24. 1.104 1.244 ↑ 1.0 186 1

Bitmap Heap Scan on timeentrymetadata te_comment (cost=9.72..177.04 rows=186 width=32) (actual time=0.214..1.244 rows=186 loops=1)

  • Recheck Cond: (key = 'urn:replicon:time-entry-metadata-key:comments'::text)
  • Heap Blocks: exact=20
25. 0.140 0.140 ↑ 1.0 186 1

Bitmap Index Scan on ixtemdkey (cost=0.00..9.68 rows=186 width=0) (actual time=0.140..0.140 rows=186 loops=1)

  • Index Cond: (key = 'urn:replicon:time-entry-metadata-key:comments'::text)
26. 0.041 0.079 ↑ 1.0 7 1

Hash (cost=1.07..1.07 rows=7 width=4) (actual time=0.079..0.079 rows=7 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
27. 0.038 0.038 ↑ 1.0 7 1

Seq Scan on activities act (cost=0.00..1.07 rows=7 width=4) (actual time=0.008..0.038 rows=7 loops=1)

28. 1.934 4.485 ↑ 1.0 495 1

Hash (cost=187.31..187.31 rows=495 width=87) (actual time=4.485..4.485 rows=495 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 62kB
29. 2.308 2.551 ↑ 1.0 495 1

Bitmap Heap Scan on timeentrymetadata te_project (cost=24.12..187.31 rows=495 width=87) (actual time=0.269..2.551 rows=495 loops=1)

  • Recheck Cond: (key = 'urn:replicon:time-entry-metadata-key:project'::text)
  • Heap Blocks: exact=56
30. 0.243 0.243 ↑ 1.0 495 1

Bitmap Index Scan on ixtemdkey (cost=0.00..23.99 rows=495 width=0) (actual time=0.243..0.243 rows=495 loops=1)

  • Index Cond: (key = 'urn:replicon:time-entry-metadata-key:project'::text)
31. 0.147 0.864 ↑ 690.0 30 1

Hash (cost=277.02..277.02 rows=20,700 width=68) (actual time=0.864..0.864 rows=30 loops=1)

  • Buckets: 32768 Batches: 1 Memory Usage: 259kB
32. 0.307 0.717 ↑ 690.0 30 1

Nested Loop (cost=0.00..277.02 rows=20,700 width=68) (actual time=0.043..0.717 rows=30 loops=1)

33. 0.012 0.012 ↑ 690.0 1 1

Seq Scan on projectsysteminformation psi (cost=0.00..16.90 rows=690 width=32) (actual time=0.008..0.012 rows=1 loops=1)

34. 0.245 0.398 ↑ 1.0 30 1

Materialize (cost=0.00..1.45 rows=30 width=36) (actual time=0.023..0.398 rows=30 loops=1)

35. 0.153 0.153 ↑ 1.0 30 1

Seq Scan on userinfo ui (cost=0.00..1.30 rows=30 width=36) (actual time=0.010..0.153 rows=30 loops=1)

36. 0.088 0.195 ↑ 1.0 25 1

Hash (cost=2.25..2.25 rows=25 width=8) (actual time=0.195..0.195 rows=25 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
37. 0.107 0.107 ↑ 1.0 25 1

Seq Scan on project proj (cost=0.00..2.25 rows=25 width=8) (actual time=0.008..0.107 rows=25 loops=1)

38. 3.487 8.609 ↑ 1.0 974 1

Hash (cost=211.39..211.39 rows=974 width=87) (actual time=8.609..8.609 rows=974 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 112kB
39. 5.122 5.122 ↑ 1.0 974 1

Seq Scan on timeentrymetadata te_task (cost=0.00..211.39 rows=974 width=87) (actual time=0.793..5.122 rows=974 loops=1)

  • Filter: (key = 'urn:replicon:time-entry-metadata-key:task'::text)
  • Rows Removed by Filter: 3377
40. 0.436 0.863 ↑ 1.0 126 1

Hash (cost=3.26..3.26 rows=126 width=4) (actual time=0.863..0.863 rows=126 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 13kB
41. 0.427 0.427 ↑ 1.0 126 1

Seq Scan on task (cost=0.00..3.26 rows=126 width=4) (actual time=0.011..0.427 rows=126 loops=1)

42. 3.183 8.218 ↑ 1.0 954 1

Hash (cost=211.39..211.39 rows=954 width=87) (actual time=8.218..8.218 rows=954 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 134kB
43. 5.035 5.035 ↑ 1.0 954 1

Seq Scan on timeentrymetadata te_billingrate (cost=0.00..211.39 rows=954 width=87) (actual time=0.017..5.035 rows=954 loops=1)

  • Filter: (key = 'urn:replicon:time-entry-metadata-key:billing-rate'::text)
  • Rows Removed by Filter: 3397
44. 0.399 0.952 ↑ 1.0 123 1

Hash (cost=165.75..165.75 rows=123 width=87) (actual time=0.952..0.952 rows=123 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 26kB
45. 0.468 0.553 ↑ 1.0 123 1

Bitmap Heap Scan on timeentrymetadata te_breaktype (cost=9.24..165.75 rows=123 width=87) (actual time=0.098..0.553 rows=123 loops=1)

  • Recheck Cond: (key = 'urn:replicon:time-entry-metadata-key:break-type'::text)
  • Heap Blocks: exact=29
46. 0.085 0.085 ↑ 1.0 123 1

Bitmap Index Scan on ixtemdkey (cost=0.00..9.21 rows=123 width=0) (actual time=0.085..0.085 rows=123 loops=1)

  • Index Cond: (key = 'urn:replicon:time-entry-metadata-key:break-type'::text)
47. 0.015 0.026 ↑ 1.0 2 1

Hash (cost=1.02..1.02 rows=2 width=16) (actual time=0.026..0.026 rows=2 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
48. 0.011 0.011 ↑ 1.0 2 1

Seq Scan on breaktype bt (cost=0.00..1.02 rows=2 width=16) (actual time=0.005..0.011 rows=2 loops=1)

49. 0.006 0.051 ↓ 0.0 0 1

Hash (cost=8.01..8.01 rows=1 width=87) (actual time=0.051..0.051 rows=0 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 8kB
50. 0.045 0.045 ↓ 0.0 0 1

Index Scan using ixtemdkey on timeentrymetadata te_timeofftype (cost=0.28..8.01 rows=1 width=87) (actual time=0.045..0.045 rows=0 loops=1)

  • Index Cond: (key = 'urn:replicon:time-entry-metadata-key:time-off-type'::text)
51. 0.034 0.067 ↑ 1.0 9 1

Hash (cost=1.09..1.09 rows=9 width=4) (actual time=0.067..0.067 rows=9 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
52. 0.033 0.033 ↑ 1.0 9 1

Seq Scan on timeoffcode toc (cost=0.00..1.09 rows=9 width=4) (actual time=0.005..0.033 rows=9 loops=1)

53. 0.005 0.065 ↓ 0.0 0 1

Hash (cost=8.01..8.01 rows=1 width=87) (actual time=0.065..0.065 rows=0 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 8kB
54. 0.060 0.060 ↓ 0.0 0 1

Index Scan using ixtemdkey on timeentrymetadata te_client (cost=0.28..8.01 rows=1 width=87) (actual time=0.060..0.060 rows=0 loops=1)

  • Index Cond: (key = 'urn:replicon:time-entry-metadata-key:client'::text)
55. 0.018 0.036 ↑ 1.0 4 1

Hash (cost=1.04..1.04 rows=4 width=4) (actual time=0.036..0.036 rows=4 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
56. 0.018 0.018 ↑ 1.0 4 1

Seq Scan on clients client (cost=0.00..1.04 rows=4 width=4) (actual time=0.005..0.018 rows=4 loops=1)

57. 0.006 0.050 ↓ 0.0 0 1

Hash (cost=8.01..8.01 rows=1 width=17) (actual time=0.050..0.050 rows=0 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 8kB
58. 0.044 0.044 ↓ 0.0 0 1

Index Scan using ixtemdkey on timeentrymetadata te_isbillable (cost=0.28..8.01 rows=1 width=17) (actual time=0.044..0.044 rows=0 loops=1)

  • Index Cond: (key = 'urn:replicon:time-entry-metadata-key:is-billable'::text)
Planning time : 22.013 ms
Execution time : 1,544.689 ms