Maison >base de données >tutoriel mysql >Comment récupérer efficacement des adresses dans une plage spécifiée à l'aide de MySQL ?

Comment récupérer efficacement des adresses dans une plage spécifiée à l'aide de MySQL ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-03 15:13:03311parcourir

How to Efficiently Retrieve Addresses within a Specified Range using MySQL?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn