Optimisation des calculs de distance pour la recherche de proximité de localisation
Problème :
Votre script PHP calcule les distances entre un emplacement donné et de nombreux emplacements commerciaux dans une base de données en utilisant la formule Haversine. Cependant, avec la taille croissante de votre base de données (5 000 entreprises), vous êtes préoccupé par les performances.
Solution : exploiter le calcul de distance basé sur une base de données
Pour améliorer considérablement Pour améliorer l'efficacité de votre recherche, envisagez d'utiliser une requête de base de données qui intègre directement la formule Haversine. Cette approche évite d'avoir à récupérer toutes les données commerciales et à effectuer des calculs de distance dans votre script PHP. Voici comment :
À l'aide de la clause HAVING de MySQL, vous pouvez appliquer un filtre de distance à l'ensemble de résultats :
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 :
En effectuant ce calcul dans la base de données , vous réduisez considérablement la quantité de données qui doivent être transférées vers votre script PHP pour un traitement ultérieur. Cette approche améliore considérablement les performances, en particulier pour les grands ensembles 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!