Maison > base de données > tutoriel mysql > Comment optimiser les requêtes géospatiales dans MySQL pour les adresses dans un rayon ?

Comment optimiser les requêtes géospatiales dans MySQL pour les adresses dans un rayon ?

DDD
Libérer: 2024-11-02 03:23:02
original
369 Les gens l'ont consulté

How to Optimize GeoSpatial Queries in MySQL for Addresses Within a Radius?

MySQL dans une plage de requêtes géospatiales pour les cartes

Interroger des données géographiques à partir d'une grande base de données pour afficher des emplacements spécifiques dans une plage spécifiée est un défi courant dans les applications cartographiques. Cette question explore comment optimiser la récupération des adresses dans un rayon de 5 miles autour de la géolocalisation donnée par un utilisateur.

Formule Haversine pour le calcul de la distance

Pour déterminer la distance entre deux points à la surface de la Terre, la formule de Haversine est utilisée. Cette formule mathématique calcule la distance orthodromique, en tenant compte de la courbure de la Terre ainsi que des latitudes et longitudes des points.

Optimisation des requêtes avec la formule Haveline

Exploitation de la Formule Haversine, la requête MySQL fournie récupère uniquement les adresses qui se situent dans la plage souhaitée :

$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

Paramètres et variables

  • $lat **, **$lng: Coordonnées de la position actuelle de l'utilisateur.
  • lat, lng: Colonnes du tableau contenant les coordonnées de chaque adresse .
  • 3959 : Rayon de la Terre en miles (convertir en 6371 pour les kilomètres).
  • distance : Distance calculée entre l'emplacement de l'utilisateur et chaque adresse .

Résultat

La requête génère une liste d'adresses avec leurs distances calculées respectives. La clause HAVING garantit que seules les adresses situées dans le rayon de 5 miles spécifié sont récupérées, ce qui permet une sélection d'enregistrements plus efficace et plus ciblée. Cette approche réduit considérablement la quantité de données transférées et traitées, améliorant ainsi les performances globales de l'application cartographique.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal