explain.depesz.com

PostgreSQL's explain analyze made readable

Result: VWFW

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

Limit (cost=5,474.09..5,474.10 rows=2 width=554) (actual rows= loops=)

2. 0.000 0.000 ↓ 0.0

Sort (cost=5,474.09..5,474.10 rows=2 width=554) (actual rows= loops=)

  • Sort Key: (('12742'::double precision * asin(sqrt((power(sin((((('44.8350088'::double precision - artisans.latitude) * '3.14159265358979'::double precision) / '180'::double precision) / '2'::double precision)), '2'::double precision) + (('0.709140059337767'::double precision * cos(((artisans.latitude * '3.14159265358979'::double precision) / '180'::double precision))) * power(sin((((('-0.587269'::double precision - artisans.longitude) * '3.14159265358979'::double precision) / '180'::double precision) / '2'::double precision)), '2'::double precision)))))))
3. 0.000 0.000 ↓ 0.0

Nested Loop (cost=484.44..5,474.08 rows=2 width=554) (actual rows= loops=)

4. 0.000 0.000 ↓ 0.0

Nested Loop Semi Join (cost=484.02..5,457.06 rows=2 width=514) (actual rows= loops=)

5. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on artisans (cost=478.85..4,923.67 rows=14 width=514) (actual rows= loops=)

  • Recheck Cond: ((latitude >= '43.9356871940813'::double precision) AND (latitude <= '45.7343304059187'::double precision) AND (longitude >= '-1.85545515600219'::double precision) AND (longitude <= '0.680917156002194'::double precision))
  • Filter: ((('12742'::double precision * asin(sqrt((power(sin((((('44.8350088'::double precision - latitude) * '3.14159265358979'::double precision) / '180'::double precision) / '2'::double precision)), '2'::double precision) + (('0.709140059337767'::double precision * cos(((latitude * '3.14159265358979'::double precision) / '180'::double precision))) * power(sin((((('-0.587269'::double precision - longitude) * '3.14159265358979'::double precision) / '180'::double precision) / '2'::double precision)), '2'::double precision)))))) >= '0'::double precision) AND (('12742'::double precision * asin(sqrt((power(sin((((('44.8350088'::double precision - latitude) * '3.14159265358979'::double precision) / '180'::double precision) / '2'::double precision)), '2'::double precision) + (('0.709140059337767'::double precision * cos(((latitude * '3.14159265358979'::double precision) / '180'::double precision))) * power(sin((((('-0.587269'::double precision - longitude) * '3.14159265358979'::double precision) / '180'::double precision) / '2'::double precision)), '2'::double precision)))))) <= '100'::double precision))
6. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on index_artisans_on_latitude_and_longitude (cost=0.00..478.85 rows=2,862 width=0) (actual rows= loops=)

  • Index Cond: ((latitude >= '43.9356871940813'::double precision) AND (latitude <= '45.7343304059187'::double precision) AND (longitude >= '-1.85545515600219'::double precision) AND (longitude <= '0.680917156002194'::double precision))
7. 0.000 0.000 ↓ 0.0

Nested Loop Semi Join (cost=5.17..38.09 rows=1 width=16) (actual rows= loops=)

8. 0.000 0.000 ↓ 0.0

Nested Loop Semi Join (cost=4.89..37.77 rows=1 width=48) (actual rows= loops=)

9. 0.000 0.000 ↓ 0.0

Bitmap Heap Scan on qualifications_obtenues (cost=4.48..35.98 rows=2 width=32) (actual rows= loops=)

  • Recheck Cond: (artisan_id = artisans.id)
  • Filter: ((date_debut <= '2019-02-07'::date) AND (date_fin >= '2019-02-07'::date))
10. 0.000 0.000 ↓ 0.0

Bitmap Index Scan on index_qualifications_obtenues_on_artisan_id (cost=0.00..4.48 rows=8 width=0) (actual rows= loops=)

  • Index Cond: (artisan_id = artisans.id)
11. 0.000 0.000 ↓ 0.0

Nested Loop Semi Join (cost=0.41..0.88 rows=1 width=16) (actual rows= loops=)

12. 0.000 0.000 ↓ 0.0

Index Scan using index_operations_qualifications_on_qualification_id on operations_qualifications operations_qualifications_1 (cost=0.28..0.33 rows=3 width=32) (actual rows= loops=)

  • Index Cond: (qualification_id = qualifications_obtenues.qualification_id)
13. 0.000 0.000 ↓ 0.0

Index Scan using index_types_travaux_on_operation_id on types_travaux (cost=0.14..0.17 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (operation_id = operations_qualifications_1.operation_id)
  • Filter: ((slug)::text = 'isolation-des-murs-interieurs'::text)
14. 0.000 0.000 ↓ 0.0

Index Only Scan using index_operations_qualifications_on_qualification_id on operations_qualifications (cost=0.28..0.33 rows=3 width=16) (actual rows= loops=)

  • Index Cond: (qualification_id = qualifications_obtenues.qualification_id)
15. 0.000 0.000 ↓ 0.0

Index Scan using entreprises_pkey on entreprises (cost=0.42..8.44 rows=1 width=16) (actual rows= loops=)

  • Index Cond: (id = artisans.entreprise_id)
  • Filter: ((etat_administratif)::text = 'Active'::text)