Optimisation des requêtes de base de données pour les requêtes de plage de géolocalisation
Lorsque vous traitez de grandes bases de données contenant des données géographiques, il devient crucial d'optimiser les requêtes pour récupérer uniquement les données pertinentes. enregistrements dans une plage spécifique. Un de ces scénarios consiste à sélectionner des adresses dans un certain rayon à partir d'un emplacement donné. Cet article explore comment résoudre efficacement ce problème à l'aide de la formule Haversine de MySQL.
La formule Haversine
La formule Haversine est une équation mathématique utilisée pour calculer la distance entre deux points. sur une sphère. Dans le cadre de données géographiques, elle permet de déterminer la distance entre deux paires latitude-longitude.
Requête MySQL
A l'aide de la formule Haversine, on peut construire une Requête MySQL pour sélectionner uniquement les adresses dans une plage spécifiée. La requête ci-dessous illustre cette approche :
<code class="sql">SELECT *, (3959 * acos(cos(radians(?)) * cos(radians(lat)) * cos(radians(lng) - radians(?)) + sin(radians(?)) * sin(radians(lat)))) AS distance FROM your_table HAVING distance < ?;</code>
Dans cette requête, ? représente les coordonnées de latitude et de longitude de l'emplacement de l'utilisateur (point d'origine), et ? représente la portée maximale en milles marins (ou kilomètres si 3959 est remplacé par 6371).
Avantages de cette approche
Cette solution MySQL offre plusieurs avantages :
Conseils supplémentaires
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!