Récupérer efficacement des adresses dans une plage spécifiée à l'aide de MySQL
Pour récupérer efficacement des adresses dans un rayon de 5 miles à partir d'un emplacement donné, il est inefficace pour récupérer les 100 000 adresses et calculer la distance en Java. Au lieu de cela, MySQL fournit une solution appropriée grâce à la formule Haversine.
La formule Haversine calcule la distance orthodromique entre deux points sur une sphère, dans ce cas, l'emplacement de l'utilisateur et chaque adresse. En utilisant cette formule, vous pouvez construire une requête MySQL comme suit :
<code class="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;</code>
Dans la requête ci-dessus, $lat et $lng représentent les coordonnées de l'utilisateur, tandis que lat et lng représentent les coordonnées de l'adresse. En appliquant la formule Haversine, la requête calcule la distance entre chaque adresse et l'emplacement de l'utilisateur et sélectionne uniquement celles situées dans un rayon de 5 miles.
En utilisant cette approche, vous pouvez récupérer efficacement les adresses qui doivent être affiché sur la carte tout en évitant la tâche coûteuse en calcul consistant à calculer les distances pour les 100 000 adresses.
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!