Maison >base de données >tutoriel mysql >Comment la formule Haversine peut-elle optimiser la recherche d'emplacements à proximité dans une base de données ?
Utilisation de la formule Haversine pour rechercher des emplacements à proximité
Lorsque vous traitez un grand volume d'emplacements commerciaux stockés dans une base de données, l'efficacité de la recherche les plus proches d’un point donné devient crucial. L'approche actuelle consistant à récupérer tous les emplacements et à calculer les distances un par un peut devenir d'une lenteur prohibitive à mesure que le nombre d'entreprises augmente.
Présentation de la formule Haversine
La formule Haversine fournit une manière plus efficace de calculer la distance entre deux points de la Terre, en tenant compte de la courbure de la planète. Cela peut être incorporé dans la requête SQL pour récupérer directement les emplacements les plus proches.
Requête SQL optimisée
La requête SQL optimisée utilisant la formule Haversine ressemblerait à ceci :
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
Dans cette requête, les 37 et -122 représentent respectivement la latitude et la longitude de l'emplacement donné. La colonne Distance contient la distance entre l'emplacement donné et chaque entreprise. La clause HAVING filtre les emplacements situés à plus de 25 miles (ou dans un autre rayon souhaité).
Avantages
Cette approche optimisée présente plusieurs avantages :
Conclusion
En incorporant la formule Haversine dans la requête SQL, vous pouvez améliorer considérablement l'efficacité de la recherche des emplacements les plus proches d'un point donné, résolvant efficacement les problèmes de performances et fournissant une solution évolutive. pour les grandes bases de données.
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!