explain.depesz.com

PostgreSQL's explain analyze made readable

Result: fi1k

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

Hash Semi Join (cost=1,586,904.92..3,145,335.37 rows=1 width=8) (actual rows= loops=)

  • Hash Cond: (u.user_id = r.user_id)
2. 0.000 0.000 ↓ 0.0

Gather (cost=42,288.75..1,571,032.57 rows=56,545,857 width=12) (actual rows= loops=)

  • Workers Planned: 7
3. 0.000 0.000 ↓ 0.0

Hash Anti Join (cost=42,188.75..1,005,474.00 rows=8,077,980 width=12) (actual rows= loops=)

  • Hash Cond: (u.user_id = bl.user_id)
4. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on hhuser u (cost=0.00..555,143.32 rows=8,078,012 width=12) (actual rows= loops=)

  • Filter: (type = 0)
5. 0.000 0.000 ↓ 0.0

Hash (cost=42,176.27..42,176.27 rows=247 width=4) (actual rows= loops=)

6. 0.000 0.000 ↓ 0.0

Index Only Scan using employer_black_list_user_id_key on employer_black_list bl (cost=0.09..42,176.27 rows=247 width=4) (actual rows= loops=)

  • Index Cond: (employer_id = 1,776,381)
7. 0.000 0.000 ↓ 0.0

Hash (cost=1,544,616.12..1,544,616.12 rows=1 width=4) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=100.71..1,544,616.12 rows=1 width=4) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Nested Loop (cost=100.60..1,544,612.58 rows=1 width=8) (actual rows= loops=)

10. 0.000 0.000 ↓ 0.0

Nested Loop (cost=100.48..1,544,612.26 rows=1 width=12) (actual rows= loops=)

11. 0.000 0.000 ↓ 0.0

Nested Loop (cost=100.43..1,544,611.99 rows=1 width=16) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Gather (cost=100.31..1,544,611.60 rows=1 width=12) (actual rows= loops=)

  • Workers Planned: 8
13. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.32..1,544,511.59 rows=1 width=12) (actual rows= loops=)

  • Filter: (((skill.name)::text ~~* '%телефонные продажи%'::text) OR ((skill.name)::text ~~* '%телефонных продажах%'::text) OR ((skill.name)::text ~~* '%активные продажи%'::text) OR ((skill.name)::text ~~* '%холодные продажи%'::text) OR ((skill.name)::text ~~* '%холодные звонки%'::text) OR (r_exp.description ~~* '%телефонных продажах%'::text) OR (r_exp.description ~~* '%телефонные продажи%'::text) OR (r_exp.description ~~* '%холодные звонки%'::text) OR (r_exp.description ~~* '%холодные продажи%'::text) OR (r_exp.description ~~* '%активные продажи%'::text) OR (r_exp.description ~~* '%холодных продажах%'::text))
14. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.23..1,544,511.32 rows=1 width=546) (actual rows= loops=)

15. 0.000 0.000 ↓ 0.0

Nested Loop Left Join (cost=0.11..1,544,510.57 rows=1 width=16) (actual rows= loops=)

16. 0.000 0.000 ↓ 0.0

Parallel Seq Scan on resume r (cost=0.00..1,544,450.22 rows=1 width=12) (actual rows= loops=)

  • Filter: ((NOT disabled) AND (work_experience_month_count >= 12) AND (desireable_compensation >= 45,000) AND (desireable_compensation <= 100,000) AND (area_id = 1) AND (desireable_compensation_currency_code = 'RUR'::bpchar) AND (is_finished = ANY ('{1,2,9}'::integer[])) AND (access_type = ANY ('{1,2,3,5}'::integer[])) AND (education_id = ANY ('{1,2,3,4}'::integer[])) AND (0 = ANY (work_schedules)) AND (0 = ANY (employments)) AND ((date_part('year'::text, (('now'::cstring)::date)::timestamp without time zone) - date_part('year'::text, birth_day)) >= '22'::double precision) AND ((date_part('year'::text, (('now'::cstring)::date)::timestamp without time zone) - date_part('year'::text, birth_day)) <= '40'::double precision))
17. 0.000 0.000 ↓ 0.0

Index Scan using resume_key_skill_pk on resume_key_skill r_skill (cost=0.11..44.05 rows=326 width=8) (actual rows= loops=)

  • Index Cond: (resume_id = r.resume_id)
18. 0.000 0.000 ↓ 0.0

Index Scan using experience_resume_id_key on experience r_exp (cost=0.11..0.60 rows=3 width=534) (actual rows= loops=)

  • Index Cond: (resume_id = r.resume_id)
19. 0.000 0.000 ↓ 0.0

Index Scan using key_skill_pkey on key_skill skill (cost=0.09..0.22 rows=1 width=94) (actual rows= loops=)

  • Index Cond: (r_skill.key_skill_id = key_skill_id)
20. 0.000 0.000 ↓ 0.0

Index Only Scan using citizenship_resume_id_area_id_key on citizenship citiz (cost=0.11..0.33 rows=1 width=4) (actual rows= loops=)

  • Index Cond: ((resume_id = r.resume_id) AND (area_id = 113))
21. 0.000 0.000 ↓ 0.0

Index Only Scan using area_pk on area a (cost=0.06..0.22 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (area_id = 1)
22. 0.000 0.000 ↓ 0.0

Index Only Scan using resume_specialization_uniq on resume_specialization rs (cost=0.11..0.27 rows=1 width=4) (actual rows= loops=)

  • Index Cond: (resume_id = citiz.resume_id)
  • Filter: (specialization_id = ANY ('{625,242,149,405,333,148}'::integer[]))
23. 0.000 0.000 ↓ 0.0

Index Only Scan using primary_education_resume_id on primary_education pe (cost=0.11..2.00 rows=31 width=4) (actual rows= loops=)

  • Index Cond: (resume_id = r.resume_id)