Mysql
 sql >> Database >  >> RDS >> Mysql

Come velocizzare la formula Haversine in MySQL?

perché stai usando HAVING ... a causa del fatto che la tua query non utilizza la funzione aggregata in modo da poter filtrare dove (ma dove non lo usi devi ripetere il codice) e per le prestazioni usando dove evita una scansione completa per aumentare il risultato per avere valutazione

  $query = $mysqli->query("SELECT postcode, (
        6371 * acos (
        cos ( radians('$latitude') )
        * cos( radians( lat ) )
        * cos( radians( lng ) - radians('$longitude') )
        + sin ( radians('$latitude') )
        * sin( radians( lat ) )
      )
  ) AS distance
  FROM postcodetabel
  WHERE    6371 * acos (
        cos ( radians('$latitude') )
        * cos( radians( lat ) )
        * cos( radians( lng ) - radians('$longitude') )
        + sin ( radians('$latitude') )
        * sin( radians( lat ) ) )< 12
  ORDER BY distance ASC");