Maison > base de données > tutoriel mysql > le corps du texte

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

Susan Sarandon
Libérer: 2024-11-03 15:13:03
original
234 Les gens l'ont consulté

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal