Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como acelerar a fórmula Haversine no mysql?


porque você está usando HAVING ...devido ao fato de sua consulta não usar função agregada para que você possa filtrar usando where (mas onde não usar você deve repetir o código) e para desempenho usando where evite uma varredura completa para reale o resultado por ter avaliação
  $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");