sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo acelerar la fórmula de Haversine en mysql?

por qué está usando HAVING ... debido al hecho de que su consulta no usa una función agregada para que pueda filtrar usando dónde (pero donde no use debe repetir el código) y para el rendimiento usando dónde evite un escaneo completo para obtener el resultado por tener evaluación

  $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");