explain.depesz.com

PostgreSQL's explain analyze made readable

Result: 3MVK

Settings

Optimization(s) for this plan:

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

Hash Right Join (cost=168.50..195.03 rows=902 width=1,888) (actual rows= loops=)

  • Hash Cond: (contracts.harvest_user_id = harvest_users.id)
2. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=32.84..48.50 rows=370 width=301) (actual rows= loops=)

  • Hash Cond: (contracts.role_id = roles.id)
3. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=31.83..46.50 rows=370 width=245) (actual rows= loops=)

  • Hash Cond: (contracts.level_id = levels_contracts.id)
4. 0.000 0.000 ↓ 0.0

Seq Scan on contracts (cost=0.00..13.70 rows=370 width=189) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Hash (cost=19.70..19.70 rows=970 width=56) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Seq Scan on levels levels_contracts (cost=0.00..19.70 rows=970 width=56) (actual rows= loops=)

7. 0.000 0.000 ↓ 0.0

Hash (cost=1.00..1.00 rows=1 width=56) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Seq Scan on roles (cost=0.00..1.00 rows=1 width=56) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Hash (cost=129.26..129.26 rows=512 width=1,587) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=99.76..129.26 rows=512 width=1,587) (actual rows= loops=)

  • Hash Cond: (rates.level_id = levels.id)
11. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=67.93..96.08 rows=512 width=1,531) (actual rows= loops=)

  • Hash Cond: (rate_cards.project_id = projects.id)
12. 0.000 0.000 ↓ 0.0

Hash Right Join (cost=20.57..40.82 rows=810 width=216) (actual rows= loops=)

  • Hash Cond: (rates.rate_card_id = rate_cards.id)
13. 0.000 0.000 ↓ 0.0

Seq Scan on rates (cost=0.00..18.10 rows=810 width=72) (actual rows= loops=)

14. 0.000 0.000 ↓ 0.0

Hash (cost=14.70..14.70 rows=470 width=144) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Seq Scan on rate_cards (cost=0.00..14.70 rows=470 width=144) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Hash (cost=45.86..45.86 rows=120 width=1,315) (actual rows= loops=)

17. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=31.84..45.86 rows=120 width=1,315) (actual rows= loops=)

  • Hash Cond: (time_entries.harvest_user_id = harvest_users.id)
18. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=17.11..30.81 rows=120 width=959) (actual rows= loops=)

  • Hash Cond: (time_entries.task_id = tasks.id)
19. 0.000 0.000 ↓ 0.0

Hash Left Join (cost=15.10..28.47 rows=120 width=868) (actual rows= loops=)

  • Hash Cond: (time_entries.client_id = clients.id)
20. 0.000 0.000 ↓ 0.0

Hash Join (cost=13.09..26.13 rows=120 width=683) (actual rows= loops=)

  • Hash Cond: (time_entries.project_id = projects.id)
21. 0.000 0.000 ↓ 0.0

Seq Scan on time_entries (cost=0.00..12.40 rows=240 width=302) (actual rows= loops=)

22. 0.000 0.000 ↓ 0.0

Hash (cost=11.90..11.90 rows=95 width=381) (actual rows= loops=)

23. 0.000 0.000 ↓ 0.0

Seq Scan on projects (cost=0.00..11.90 rows=95 width=381) (actual rows= loops=)

  • Filter: export
24. 0.000 0.000 ↓ 0.0

Hash (cost=2.00..2.00 rows=1 width=185) (actual rows= loops=)

25. 0.000 0.000 ↓ 0.0

Seq Scan on clients (cost=0.00..2.00 rows=1 width=185) (actual rows= loops=)

26. 0.000 0.000 ↓ 0.0

Hash (cost=2.00..2.00 rows=1 width=91) (actual rows= loops=)

27. 0.000 0.000 ↓ 0.0

Seq Scan on tasks (cost=0.00..2.00 rows=1 width=91) (actual rows= loops=)

28. 0.000 0.000 ↓ 0.0

Hash (cost=12.10..12.10 rows=210 width=356) (actual rows= loops=)

29. 0.000 0.000 ↓ 0.0

Seq Scan on harvest_users (cost=0.00..12.10 rows=210 width=356) (actual rows= loops=)

30. 0.000 0.000 ↓ 0.0

Hash (cost=19.70..19.70 rows=970 width=56) (actual rows= loops=)

31. 0.000 0.000 ↓ 0.0

Seq Scan on levels (cost=0.00..19.70 rows=970 width=56) (actual rows= loops=)