Maison > Article > base de données > Comment optimiser les requêtes géospatiales dans MySQL pour les adresses dans un rayon ?
MySQL dans une plage de requêtes géospatiales pour les cartes
Interroger des données géographiques à partir d'une grande base de données pour afficher des emplacements spécifiques dans une plage spécifiée est un défi courant dans les applications cartographiques. Cette question explore comment optimiser la récupération des adresses dans un rayon de 5 miles autour de la géolocalisation donnée par un utilisateur.
Formule Haversine pour le calcul de la distance
Pour déterminer la distance entre deux points à la surface de la Terre, la formule de Haversine est utilisée. Cette formule mathématique calcule la distance orthodromique, en tenant compte de la courbure de la Terre ainsi que des latitudes et longitudes des points.
Optimisation des requêtes avec la formule Haveline
Exploitation de la Formule Haversine, la requête MySQL fournie récupère uniquement les adresses qui se situent dans la plage souhaitée :
$sql = "SELECT *, (3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";
Paramètres et variables
Résultat
La requête génère une liste d'adresses avec leurs distances calculées respectives. La clause HAVING garantit que seules les adresses situées dans le rayon de 5 miles spécifié sont récupérées, ce qui permet une sélection d'enregistrements plus efficace et plus ciblée. Cette approche réduit considérablement la quantité de données transférées et traitées, améliorant ainsi les performances globales de l'application cartographique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!