Maison > Article > base de données > Comment trouver efficacement des coordonnées dans un rayon de 5 milles à l'aide de MySQL ?
Recherche de coordonnées dans une plage avec MySQL
Pour améliorer les performances de la base de données et réduire les demandes de traitement, il est souhaitable d'optimiser les requêtes qui récupèrent des données spécifiques dans une plage spécifiée. Dans ce scénario, vous disposez d'une base de données contenant 100 000 adresses, chacune avec ses coordonnées de latitude et de longitude. Votre objectif est d'afficher uniquement les adresses situées dans un rayon de 5 miles autour de l'emplacement d'un utilisateur donné, réduisant ainsi les résultats de 100 000 à environ 5 ou 6.
Pour résoudre ce problème efficacement, vous pouvez utiliser le Formule Haversine directement dans votre requête MySQL. Cette formule mathématique calcule la distance entre deux points sur une sphère en utilisant leurs valeurs respectives de latitude et de longitude.
Voici comment vous pouvez incorporer la formule Haversine dans votre requête :
$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";
Dans cette requête , remplacez $lat et $lng par les coordonnées de latitude et de longitude de l'emplacement de l'utilisateur. Le résultat de cette requête sera une liste d'adresses avec leur distance par rapport à l'emplacement de l'utilisateur spécifié dans la colonne distance. Vous pouvez ensuite utiliser cette liste pour filtrer les adresses situées dans la plage de 5 miles.
En appliquant la formule Haversine directement dans MySQL, vous pouvez réduire considérablement le nombre d'enregistrements récupérés et améliorer les performances de votre fonctionnement de la base de données. Cette méthode garantit que seules les adresses pertinentes sont renvoyées, minimisant ainsi les traitements inutiles et améliorant la réactivité de votre candidature.
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!