explain.depesz.com

PostgreSQL's explain analyze made readable

Result: VWFw

Settings
# exclusive inclusive rows x rows loops node
1. 0.820 75.743 ↓ 19.0 19 1

Sort (cost=216.52..216.52 rows=1 width=4,977) (actual time=75.474..75.743 rows=19 loops=1)

  • Sort Key: vulnerabilities.resolved_at DESC
  • Sort Method: quicksort Memory: 101kB
2. 0.767 74.923 ↓ 19.0 19 1

Nested Loop Left Join (cost=146.18..216.51 rows=1 width=4,977) (actual time=33.811..74.923 rows=19 loops=1)

3. 0.931 73.434 ↓ 19.0 19 1

Nested Loop Left Join (cost=146.03..216.03 rows=1 width=4,691) (actual time=33.729..73.434 rows=19 loops=1)

4. 0.853 72.028 ↓ 19.0 19 1

Nested Loop Left Join (cost=145.88..212.26 rows=1 width=4,209) (actual time=33.657..72.028 rows=19 loops=1)

5. 0.954 70.605 ↓ 19.0 19 1

Nested Loop Left Join (cost=145.74..210.79 rows=1 width=3,136) (actual time=33.570..70.605 rows=19 loops=1)

6. 0.799 69.081 ↓ 19.0 19 1

Nested Loop Left Join (cost=145.60..209.02 rows=1 width=2,468) (actual time=33.422..69.081 rows=19 loops=1)

7. 0.830 67.579 ↓ 19.0 19 1

Nested Loop Left Join (cost=145.45..208.55 rows=1 width=2,186) (actual time=33.384..67.579 rows=19 loops=1)

8. 1.502 65.989 ↓ 19.0 19 1

Nested Loop Left Join (cost=145.31..204.78 rows=1 width=2,182) (actual time=33.343..65.989 rows=19 loops=1)

  • Filter: (((vulnerabilities.title)::text ~~* '%wilma%'::text) OR (vulnerabilities.description ~~* '%wilma%'::text) OR (vulnerabilities.impact ~~* '%wilma%'::text) OR ((tags.name)::text ~~* '%wilma%'::text) OR ((vulnerabilities.id)::text ~~* '%wilma%'::text))
9. 0.945 63.594 ↑ 1.1 19 1

Nested Loop Left Join (cost=145.16..200.29 rows=20 width=2,139) (actual time=33.276..63.594 rows=19 loops=1)

  • Join Filter: (organization_profiles.id = vulnerabilities.org_profile_id)
10. 16.884 62.193 ↑ 1.1 19 1

Hash Right Join (cost=145.02..191.82 rows=20 width=1,609) (actual time=33.200..62.193 rows=19 loops=1)

  • Hash Cond: ((validation_steps.vulnerability_id)::text = (vulnerabilities.id)::text)
11. 14.461 14.461 ↓ 1.0 1,376 1

Seq Scan on validation_steps (cost=0.00..41.53 rows=1,353 width=146) (actual time=0.019..14.461 rows=1,376 loops=1)

12. 0.169 30.848 ↑ 1.0 10 1

Hash (cost=144.89..144.89 rows=10 width=1,463) (actual time=30.848..30.848 rows=10 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 20kB
13. 0.361 30.679 ↑ 1.0 10 1

Hash Left Join (cost=120.58..144.89 rows=10 width=1,463) (actual time=30.112..30.679 rows=10 loops=1)

  • Hash Cond: (vulnerabilities.vulnerability_status_id = vulnerability_statuses.id)
14. 0.262 29.835 ↑ 1.0 10 1

Hash Left Join (cost=90.78..114.95 rows=10 width=1,399) (actual time=29.549..29.835 rows=10 loops=1)

  • Hash Cond: ((vulnerabilities.vulnerability_category)::text = (vulnerability_categories.id)::text)
15. 0.127 27.428 ↑ 1.0 10 1

Hash Right Join (cost=85.55..109.59 rows=10 width=1,247) (actual time=27.335..27.428 rows=10 loops=1)

  • Hash Cond: (disputes.id = vulnerabilities.dispute_id)
16. 0.008 0.008 ↓ 0.0 0 1

Seq Scan on disputes (cost=0.00..20.20 rows=1,020 width=52) (actual time=0.008..0.008 rows=0 loops=1)

17. 0.135 27.293 ↑ 1.0 10 1

Hash (cost=85.43..85.43 rows=10 width=1,195) (actual time=27.293..27.293 rows=10 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 18kB
18. 6.236 27.158 ↑ 1.0 10 1

Hash Right Join (cost=71.43..85.43 rows=10 width=1,195) (actual time=15.914..27.158 rows=10 loops=1)

  • Hash Cond: ((vuln_taggings_vulnerabilities_join.vulnerability_id)::text = (vulnerabilities.id)::text)
19. 5.728 5.728 ↑ 1.0 647 1

Seq Scan on vuln_taggings vuln_taggings_vulnerabilities_join (cost=0.00..11.47 rows=647 width=17) (actual time=0.018..5.728 rows=647 loops=1)

20. 0.300 15.194 ↑ 1.0 10 1

Hash (cost=71.31..71.31 rows=10 width=1,191) (actual time=15.194..15.194 rows=10 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 18kB
21. 7.559 14.894 ↑ 1.0 10 1

Hash Right Join (cost=57.31..71.31 rows=10 width=1,191) (actual time=0.904..14.894 rows=10 loops=1)

  • Hash Cond: ((vuln_taggings.vulnerability_id)::text = (vulnerabilities.id)::text)
22. 6.949 6.949 ↑ 1.0 647 1

Seq Scan on vuln_taggings (cost=0.00..11.47 rows=647 width=21) (actual time=0.014..6.949 rows=647 loops=1)

23. 0.170 0.386 ↑ 1.0 10 1

Hash (cost=57.19..57.19 rows=10 width=1,170) (actual time=0.386..0.386 rows=10 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 18kB
24. 0.123 0.216 ↑ 1.0 10 1

Bitmap Heap Scan on vulnerabilities (cost=26.83..57.19 rows=10 width=1,170) (actual time=0.118..0.216 rows=10 loops=1)

  • Recheck Cond: ((id)::text = ANY ('{epicshears-29,epicsword-32,seedacorn-45,epicscissors-66,epicpowder-91,seedacorn-56,epicscissors-29,epicshears-15,epicshears-91,epicshears-43}'::text[]))
  • Filter: (accepted AND (org_profile_id = 1))
  • Heap Blocks: exact=10
25. 0.093 0.093 ↑ 1.0 10 1

Bitmap Index Scan on index_vulnerabilities_on_id (cost=0.00..26.82 rows=10 width=0) (actual time=0.093..0.093 rows=10 loops=1)

  • Index Cond: ((id)::text = ANY ('{epicshears-29,epicsword-32,seedacorn-45,epicscissors-66,epicpowder-91,seedacorn-56,epicscissors-29,epicshears-15,epicshears-91,epicshears-43}'::text[]))
26. 0.957 2.145 ↑ 1.0 99 1

Hash (cost=3.99..3.99 rows=99 width=152) (actual time=2.145..2.145 rows=99 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 27kB
27. 1.188 1.188 ↑ 1.0 99 1

Seq Scan on vulnerability_categories (cost=0.00..3.99 rows=99 width=152) (actual time=0.013..1.188 rows=99 loops=1)

28. 0.255 0.483 ↑ 32.6 27 1

Hash (cost=18.80..18.80 rows=880 width=64) (actual time=0.483..0.483 rows=27 loops=1)

  • Buckets: 1024 Batches: 1 Memory Usage: 11kB
29. 0.228 0.228 ↑ 32.6 27 1

Seq Scan on vulnerability_statuses (cost=0.00..18.80 rows=880 width=64) (actual time=0.015..0.228 rows=27 loops=1)

30. 0.413 0.456 ↑ 1.0 1 19

Materialize (cost=0.14..8.17 rows=1 width=530) (actual time=0.012..0.024 rows=1 loops=19)

31. 0.043 0.043 ↑ 1.0 1 1

Index Scan using organization_profiles_pkey on organization_profiles (cost=0.14..8.16 rows=1 width=530) (actual time=0.022..0.043 rows=1 loops=1)

  • Index Cond: (id = 1)
32. 0.893 0.893 ↑ 1.0 1 19

Index Scan using tags_pkey on tags (cost=0.15..0.20 rows=1 width=47) (actual time=0.036..0.047 rows=1 loops=19)

  • Index Cond: (id = vuln_taggings_vulnerabilities_join.tag_id)
33. 0.760 0.760 ↑ 1.0 1 19

Index Scan using listings_pkey on listings (cost=0.14..3.76 rows=1 width=8) (actual time=0.031..0.040 rows=1 loops=19)

  • Index Cond: (id = vulnerabilities.listing_id)
34. 0.703 0.703 ↑ 1.0 1 19

Index Scan using categories_pkey on categories (cost=0.15..0.46 rows=1 width=286) (actual time=0.026..0.037 rows=1 loops=19)

  • Index Cond: (id = listings.category_id)
35. 0.570 0.570 ↑ 1.0 1 19

Index Scan using users_pkey on users (cost=0.14..1.76 rows=1 width=668) (actual time=0.015..0.030 rows=1 loops=19)

  • Index Cond: (id = vulnerabilities.user_id)
36. 0.570 0.570 ↑ 1.0 1 19

Index Scan using index_researcher_profiles_on_user_id on researcher_profiles (cost=0.14..1.46 rows=1 width=1,073) (actual time=0.014..0.030 rows=1 loops=19)

  • Index Cond: (user_id = users.id)
37. 0.475 0.475 ↑ 1.0 1 19

Index Scan using listings_pkey on listings listings_vulnerabilities (cost=0.14..3.76 rows=1 width=482) (actual time=0.015..0.025 rows=1 loops=19)

  • Index Cond: (id = vulnerabilities.listing_id)
38. 0.722 0.722 ↑ 1.0 1 19

Index Scan using categories_pkey on categories categories_listings (cost=0.15..0.46 rows=1 width=286) (actual time=0.029..0.038 rows=1 loops=19)

  • Index Cond: (id = listings_vulnerabilities.category_id)