explain.depesz.com

PostgreSQL's explain analyze made readable

Result: cav6

Settings
# exclusive inclusive rows x rows loops node
1. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=47,816.24..47,816.27 rows=1 width=46) (actual rows= loops=)

  • Group Key: kat.nazwa, ((((lzat.pe_nazwisko)::text || ' '::text) || (lzat.pe_imie)::text))
2. 0.000 0.000 ↓ 0.0

Sort (cost=47,816.24..47,816.24 rows=1 width=46) (actual rows= loops=)

  • Sort Key: kat.nazwa, ((((lzat.pe_nazwisko)::text || ' '::text) || (lzat.pe_imie)::text))
3. 0.000 0.000 ↓ 0.0

Nested Loop (cost=39,929.48..47,816.23 rows=1 width=46) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=39,929.34..47,815.99 rows=1 width=34) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Nested Loop (cost=39,929.34..47,815.89 rows=1 width=46) (actual rows= loops=)

  • Join Filter: ((bopis.badanie_rel)::text = (bs.installid)::text)
6. 0.000 0.000 ↓ 0.0

Merge Join (cost=21,857.94..24,173.08 rows=1 width=28) (actual rows= loops=)

  • Merge Cond: ((bo_1.badanie_rel)::text = (bopis.badanie_rel)::text)
  • Join Filter: (bopis.wersja = (max(bo_1.wersja)))
7. 0.000 0.000 ↓ 0.0

GroupAggregate (cost=14,341.00..15,739.29 rows=72,943 width=16) (actual rows= loops=)

  • Group Key: bo_1.badanie_rel
8. 0.000 0.000 ↓ 0.0

Sort (cost=14,341.00..14,563.95 rows=89,181 width=16) (actual rows= loops=)

  • Sort Key: bo_1.badanie_rel
9. 0.000 0.000 ↓ 0.0

Seq Scan on bopis bo_1 (cost=0.00..7,008.34 rows=89,181 width=16) (actual rows= loops=)

  • Filter: (zatwierdil IS NOT NULL)
10. 0.000 0.000 ↓ 0.0

Sort (cost=7,516.94..7,517.72 rows=312 width=27) (actual rows= loops=)

  • Sort Key: bopis.badanie_rel
11. 0.000 0.000 ↓ 0.0

Seq Scan on bopis (cost=0.00..7,504.01 rows=312 width=27) (actual rows= loops=)

  • Filter: ((dataopisu >= '2019-09-19 00:00:00'::timestamp without time zone) AND (dataopisu <= '2019-10-31 23:59:59'::timestamp without time zone))
12. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=18,071.40..23,227.29 rows=33,241 width=78) (actual rows= loops=)

  • Hash Cond: ((bj.kategoria_installid)::text = (kat.installid)::text)
13. 0.000 0.000 ↓ 0.0

Hash Join (cost=18,045.14..22,743.96 rows=33,241 width=53) (actual rows= loops=)

  • Hash Cond: ((bs.statusy_lista_id)::text = (st.installid)::text)
14. 0.000 0.000 ↓ 0.0

Hash Join (cost=18,043.44..22,285.20 rows=33,241 width=57) (actual rows= loops=)

  • Hash Cond: ((br.installid)::text = (bs.installid)::text)
15. 0.000 0.000 ↓ 0.0

Seq Scan on brejestracja br (cost=0.00..2,657.49 rows=100,149 width=23) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Hash (cost=17,627.93..17,627.93 rows=33,241 width=45) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Hash Join (cost=13,854.44..17,627.93 rows=33,241 width=45) (actual rows= loops=)

  • Hash Cond: ((bod.installid)::text = (bs.installid)::text)
18. 0.000 0.000 ↓ 0.0

Seq Scan on bopisdla bod (cost=0.00..2,190.48 rows=100,048 width=16) (actual rows= loops=)

19. 0.000 0.000 ↓ 0.0

Hash (cost=13,438.67..13,438.67 rows=33,261 width=33) (actual rows= loops=)

20. 0.000 0.000 ↓ 0.0

Hash Join (cost=10,405.44..13,438.67 rows=33,261 width=33) (actual rows= loops=)

  • Hash Cond: ((bs.installid)::text = (bj.installid)::text)
21. 0.000 0.000 ↓ 0.0

Seq Scan on bstatus bs (cost=0.00..2,200.08 rows=100,108 width=16) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Hash (cost=9,989.68..9,989.68 rows=33,261 width=17) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Hash Join (cost=5,910.07..9,989.68 rows=33,261 width=17) (actual rows= loops=)

  • Hash Cond: ((bj.badania_installid)::text = (b.installid)::text)
24. 0.000 0.000 ↓ 0.0

Seq Scan on badaniejedn bj (cost=0.00..3,372.82 rows=99,782 width=29) (actual rows= loops=)

25. 0.000 0.000 ↓ 0.0

Hash (cost=5,492.24..5,492.24 rows=33,426 width=12) (actual rows= loops=)

26. 0.000 0.000 ↓ 0.0

Hash Join (cost=2.14..5,492.24 rows=33,426 width=12) (actual rows= loops=)

  • Hash Cond: (((b.pracownia)::text = (pr.installid)::text) AND ((b.gabinet)::text = (g.installid)::text))
27. 0.000 0.000 ↓ 0.0

Seq Scan on badania b (cost=0.00..4,403.77 rows=100,277 width=148) (actual rows= loops=)

28. 0.000 0.000 ↓ 0.0

Hash (cost=2.11..2.11 rows=2 width=234) (actual rows= loops=)

29. 0.000 0.000 ↓ 0.0

Hash Join (cost=1.04..2.11 rows=2 width=234) (actual rows= loops=)

  • Hash Cond: ((g.pracownia_installid)::text = (pr.installid)::text)
30. 0.000 0.000 ↓ 0.0

Seq Scan on gabinety g (cost=0.00..1.03 rows=3 width=156) (actual rows= loops=)

31. 0.000 0.000 ↓ 0.0

Hash (cost=1.02..1.02 rows=2 width=78) (actual rows= loops=)

32. 0.000 0.000 ↓ 0.0

Seq Scan on pracownie pr (cost=0.00..1.02 rows=2 width=78) (actual rows= loops=)

33. 0.000 0.000 ↓ 0.0

Hash (cost=1.31..1.31 rows=31 width=78) (actual rows= loops=)

34. 0.000 0.000 ↓ 0.0

Seq Scan on statusylista st (cost=0.00..1.31 rows=31 width=78) (actual rows= loops=)

35. 0.000 0.000 ↓ 0.0

Hash (cost=18.34..18.34 rows=634 width=46) (actual rows= loops=)

36. 0.000 0.000 ↓ 0.0

Seq Scan on kategorie kat (cost=0.00..18.34 rows=634 width=46) (actual rows= loops=)

37. 0.000 0.000 ↓ 0.0

Index Scan using hl7badanie_idx1 on hl7badanie hl7 (cost=0.00..0.09 rows=1 width=13) (actual rows= loops=)

  • Index Cond: ((badanie)::text = (bj.installid)::text)
38. 0.000 0.000 ↓ 0.0

Index Scan using personel_pkey on personel lzat (cost=0.14..0.22 rows=1 width=20) (actual rows= loops=)

  • Index Cond: ((installid)::text = (bopis.zatwierdil)::text)
  • Filter: ((((pe_nazwisko)::text || ' '::text) || (pe_imie)::text) = 'GROCHOWIEC MICHAŁ'::text)