Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment accélérer la formule Haversine dans mysql ?

pourquoi vous utilisez HAVING ... en raison du fait que votre requête n'utilise pas de fonction agrégée afin que vous puissiez filtrer où (mais où ne pas utiliser, vous devez répéter le code) et pour les performances en utilisant où éviter une analyse complète pour reaise le résultat pour avoir une évaluation

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