Maison > base de données > tutoriel mysql > Comment puis-je optimiser les performances de recherche de proximité en PHP avec une grande base de données ?

Comment puis-je optimiser les performances de recherche de proximité en PHP avec une grande base de données ?

Linda Hamilton
Libérer: 2024-11-09 06:46:02
original
546 Les gens l'ont consulté

How Can I Optimize Location Proximity Search Performance in PHP with a Large Database?

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;
Copier après la connexion

Dans cette requête :

  • 37 et - 122 sont des exemples de valeurs de latitude et de longitude pour l'emplacement de référence.
  • La clause HAVING filtre les résultats en fonction de la distance calculée colonne, garantissant que seuls les emplacements dans un rayon de 25 unités sont renvoyés.
  • La clause ORDER BY trie les résultats par ordre croissant de distance.

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!

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