Maison > base de données > tutoriel mysql > Comment trouver efficacement des coordonnées dans un rayon de 5 milles à l'aide de MySQL ?

Comment trouver efficacement des coordonnées dans un rayon de 5 milles à l'aide de MySQL ?

Barbara Streisand
Libérer: 2024-11-01 01:56:28
original
353 Les gens l'ont consulté

How to Efficiently Find Coordinates Within a 5-Mile Radius Using 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";
Copier après la connexion

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!

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