explain.depesz.com

PostgreSQL's explain analyze made readable

Result: Fg9M

Settings
# exclusive inclusive rows x rows loops node
1. 8,500.508 61,835.150 ↑ 2.7 199,014 1

GroupAggregate (cost=89,258.08..27,538,251.24 rows=534,417 width=79) (actual time=11,715.480..61,835.150 rows=199,014 loops=1)

2. 9,510.185 13,321.348 ↓ 1.0 534,445 1

Sort (cost=89,258.08..90,594.12 rows=534,417 width=79) (actual time=11,715.306..13,321.348 rows=534,445 loops=1)

  • Sort Key: funcionario.idfuncionario, fa.fechamarcacion, funcionario.nombre, hf.horaentma, hf.horasaltar
  • Sort Method: external merge Disk: 40768kB
3. 1,878.807 3,811.163 ↓ 1.0 534,445 1

Hash Right Join (cost=44.79..21,452.20 rows=534,417 width=79) (actual time=3.511..3,811.163 rows=534,445 loops=1)

  • Hash Cond: (fa.idfuncionario = funcionario.idfuncionario)
4. 1,928.916 1,928.916 ↑ 1.0 534,417 1

Seq Scan on funcionario_asistencia fa (cost=0.00..14,059.17 rows=534,417 width=35) (actual time=0.044..1,928.916 rows=534,417 loops=1)

5. 0.892 3.440 ↑ 1.0 694 1

Hash (cost=36.12..36.12 rows=694 width=48) (actual time=3.440..3.440 rows=694 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 57kB
6. 1.266 2.548 ↑ 1.0 694 1

Hash Left Join (cost=1.04..36.12 rows=694 width=48) (actual time=0.072..2.548 rows=694 loops=1)

  • Hash Cond: (funcionario.idhorario = hf.idhorariofuncionario)
7. 1.267 1.267 ↑ 1.0 694 1

Seq Scan on funcionario (cost=0.00..25.94 rows=694 width=36) (actual time=0.032..1.267 rows=694 loops=1)

8. 0.009 0.015 ↑ 1.0 2 1

Hash (cost=1.02..1.02 rows=2 width=20) (actual time=0.015..0.015 rows=2 loops=1)

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

Seq Scan on horariofuncionario hf (cost=0.00..1.02 rows=2 width=20) (actual time=0.004..0.006 rows=2 loops=1)

10.          

SubPlan (forGroupAggregate)

11. 5,771.406 5,771.406 ↑ 1.0 1 199,014

Index Scan using index_marcacion on funcionario_asistencia (cost=0.42..4.45 rows=1 width=6) (actual time=0.025..0.029 rows=1 loops=199,014)

  • Index Cond: ((fa.fechamarcacion = fechamarcacion) AND (funcionario.idfuncionario = idfuncionario))
  • Filter: (btrim((tipo_entrada)::text) = 'I'::text)
  • Rows Removed by Filter: 2
12. 1,194.084 4,179.294 ↑ 1.0 1 199,014

Aggregate (cost=4.46..4.48 rows=1 width=6) (actual time=0.020..0.021 rows=1 loops=199,014)

13. 2,985.210 2,985.210 ↑ 1.0 1 199,014

Index Scan using index_marcacion on funcionario_asistencia funcionario_asistencia_1 (cost=0.42..4.46 rows=1 width=6) (actual time=0.013..0.015 rows=1 loops=199,014)

  • Index Cond: ((fa.fechamarcacion = fechamarcacion) AND (funcionario.idfuncionario = idfuncionario))
  • Filter: ((btrim((tipo_entrada)::text) = 'O'::text) OR (btrim((tipo_entrada)::text) = 'STS'::text) OR (btrim((tipo_entrada)::text) = 'STE'::text))
  • Rows Removed by Filter: 2
14. 2,388.168 2,388.168 ↑ 1.0 1 199,014

Index Scan using index_marcacion on funcionario_asistencia funcionario_asistencia_2 (cost=0.42..4.45 rows=1 width=16) (actual time=0.010..0.012 rows=1 loops=199,014)

  • Index Cond: ((fa.fechamarcacion = fechamarcacion) AND (funcionario.idfuncionario = idfuncionario))
  • Filter: (btrim((tipo_entrada)::text) = 'O'::text)
  • Rows Removed by Filter: 2
15. 2,189.154 2,189.154 ↑ 1.0 1 199,014

Index Scan using index_marcacion on funcionario_asistencia funcionario_asistencia_3 (cost=0.42..4.45 rows=1 width=16) (actual time=0.010..0.011 rows=1 loops=199,014)

  • Index Cond: ((fa.fechamarcacion = fechamarcacion) AND (funcionario.idfuncionario = idfuncionario))
  • Filter: (btrim((tipo_entrada)::text) = 'O'::text)
  • Rows Removed by Filter: 2
16. 1,194.084 16,120.134 ↑ 1.0 1 199,014

Limit (cost=4.47..6.73 rows=1 width=25) (actual time=0.081..0.081 rows=1 loops=199,014)

17. 6,703.131 14,926.050 ↑ 1.0 1 199,014

Hash Join (cost=4.47..6.73 rows=1 width=25) (actual time=0.075..0.075 rows=1 loops=199,014)

  • Hash Cond: (tp.idtipopermiso = ff.id_tipo_permiso)
18. 4,839.681 4,839.681 ↑ 3.0 30 146,657

Seq Scan on tipo_permiso tp (cost=0.00..1.90 rows=90 width=23) (actual time=0.005..0.033 rows=30 loops=146,657)

19. 796.056 3,383.238 ↑ 1.0 1 199,014

Hash (cost=4.46..4.46 rows=1 width=6) (actual time=0.017..0.017 rows=1 loops=199,014)

  • Buckets: 1024 Batches: 1 Memory Usage: 1kB
20. 2,587.182 2,587.182 ↑ 1.0 1 199,014

Index Scan using index_marcacion on funcionario_asistencia ff (cost=0.42..4.46 rows=1 width=6) (actual time=0.010..0.013 rows=1 loops=199,014)

  • Index Cond: ((fechamarcacion = fa.fechamarcacion) AND (funcionario.idfuncionario = idfuncionario) AND (id_tipo_permiso IS NOT NULL))
  • Filter: (((tipo_entrada)::text = 'O'::text) OR ((tipo_entrada)::text = 'STS'::text) OR ((tipo_entrada)::text = 'STE'::text) OR ((tipo_entrada)::text = 'I'::text))
  • Rows Removed by Filter: 1
21. 2,786.196 2,786.196 ↓ 0.0 0 199,014

Index Scan using index_marcacion on funcionario_asistencia funcionario_asistencia_4 (cost=0.42..4.45 rows=1 width=6) (actual time=0.013..0.014 rows=0 loops=199,014)

  • Index Cond: ((fa.fechamarcacion = fechamarcacion) AND (funcionario.idfuncionario = idfuncionario))
  • Filter: (btrim((tipo_entrada)::text) = 'SA'::text)
  • Rows Removed by Filter: 2
22. 2,189.154 2,189.154 ↓ 0.0 0 199,014

Index Scan using index_marcacion on funcionario_asistencia funcionario_asistencia_5 (cost=0.42..4.45 rows=1 width=6) (actual time=0.009..0.011 rows=0 loops=199,014)

  • Index Cond: ((fa.fechamarcacion = fechamarcacion) AND (funcionario.idfuncionario = idfuncionario))
  • Filter: (btrim((tipo_entrada)::text) = 'EA'::text)
  • Rows Removed by Filter: 2
23. 2,189.154 2,189.154 ↓ 0.0 0 199,014

Index Scan using index_marcacion on funcionario_asistencia funcionario_asistencia_6 (cost=0.42..4.45 rows=1 width=6) (actual time=0.009..0.011 rows=0 loops=199,014)

  • Index Cond: ((fa.fechamarcacion = fechamarcacion) AND (funcionario.idfuncionario = idfuncionario))
  • Filter: (btrim((tipo_entrada)::text) = 'EA'::text)
  • Rows Removed by Filter: 2
24. 2,189.154 2,189.154 ↓ 0.0 0 199,014

Index Scan using index_marcacion on funcionario_asistencia funcionario_asistencia_7 (cost=0.42..4.45 rows=1 width=6) (actual time=0.009..0.011 rows=0 loops=199,014)

  • Index Cond: ((fa.fechamarcacion = fechamarcacion) AND (funcionario.idfuncionario = idfuncionario))
  • Filter: (btrim((tipo_entrada)::text) = 'SA'::text)
  • Rows Removed by Filter: 2
25. 5.740 5.740 ↑ 1.0 1 410

Index Scan using index_marcacion on funcionario_asistencia funcionario_asistencia_8 (cost=0.42..4.45 rows=1 width=6) (actual time=0.009..0.014 rows=1 loops=410)

  • Index Cond: ((fa.fechamarcacion = fechamarcacion) AND (funcionario.idfuncionario = idfuncionario))
  • Filter: (btrim((tipo_entrada)::text) = 'EA'::text)
  • Rows Removed by Filter: 3
26. 5.740 5.740 ↑ 1.0 1 410

Index Scan using index_marcacion on funcionario_asistencia funcionario_asistencia_9 (cost=0.42..4.45 rows=1 width=6) (actual time=0.010..0.014 rows=1 loops=410)

  • Index Cond: ((fa.fechamarcacion = fechamarcacion) AND (funcionario.idfuncionario = idfuncionario))
  • Filter: (btrim((tipo_entrada)::text) = 'SA'::text)
  • Rows Removed by Filter: 3