Position actuelle: Accueil> Derniers articles> Techniques d'indexation pratiques pour optimiser l'efficacité de la requête de géolocalisation et de pagination de PHP et MySQL

Techniques d'indexation pratiques pour optimiser l'efficacité de la requête de géolocalisation et de pagination de PHP et MySQL

M66 2025-07-09

Méthode d'optimisation des requêtes de localisation géographique

Dans le développement Web, la recommandation de contenu ou de services basée sur l'emplacement des utilisateurs est devenue une exigence commune. Lors du traitement de ces requêtes de localisation géographique, elle implique la récupération d'un grand nombre de données de latitude et de longitude. Afin d'améliorer la vitesse de requête, l'indexation spatiale de MySQL et les stratégies SQL raisonnables peuvent être utilisées.

Construire un tableau de données contenant la latitude et la longitude

Supposons qu'il existe un tableau appelé emplacements qui est utilisé pour stocker les informations de localisation, et les champs incluent l'ID , le nom , la latitude et la longitude . Afin d'améliorer l'efficacité de la requête, il est nécessaire de créer un indice spatial pour les champs de latitude et de longitude:

Les emplacements de la table alter ajoutent l'index spatial index_name (latitude, longitude);

Filtrage de position à l'aide de la formule Haversine

En PHP, les instructions SQL peuvent être combinées avec la formule Haversine pour calculer la distance au point cible pour réaliser la fonction de requête des emplacements à proximité:

$ latitude = 37,7749; // la latitude du point de requête $ longitude = -122.4194; // la longitude du point de requête $ Distance = 10; // le rayon du point de requête (kilomètres)

$ query = "SELECT ID, nom, latitude, longitude,
         (6371 * ACS (cos (radians ($ latitude)) * cos (radians (latitude)) *
         cos (radians (longitude) - radians ($ longitude)) +
         péché (radians ($ latitude)) * sin (radians (latitude))) comme distance
         Des emplacements
         Avoir une distance <= $ distance
         Ordre par distance ";

$ result = mysqli_query ($ Connection, $ query);

Cette méthode combine l'indexation et le filtrage à distance pour réduire considérablement les opérations de traversée inutiles, et est particulièrement adapté aux recommandations de localisation ou aux services de type carte.

Compétences d'optimisation des requêtes de pagination

Les requêtes de pagination sont extrêmement courantes lors de l'affichage de grandes listes de données, mais la pagination traditionnelle est sujette aux goulots d'étranglement des performances lorsque le volume de données est important. En utilisant des champs d'index combinés avec des clauses limites , les données dans une plage spécifiée peuvent être extraites efficacement.

Indexation du champ de pagination

Si la pagination est basée sur un champ (comme l'ID de clé primaire), il est nécessaire d'indexer le champ:

Créer index index_name sur les livres (id);

Exemple de code de requête de pagination PHP

Les éléments suivants sont des méthodes de mise en œuvre de la requête de pagination couramment utilisées:

$ page = 1; // Numéro de page actuel $ percage = 10; // Nombre d&#39;enregistrements par page $ offset = ($ page - 1) * $ percage;

$ query = "select * dans les livres
         Commande par id
         Limiter $ offset, $ percage ";

$ result = mysqli_query ($ Connection, $ query);

Par rapport à des sous-requêtes complexes ou à des scénarios de décalage plus grands, la pagination limite combinée avec les champs d'index peut réduire considérablement la charge de la base de données, en particulier lorsque le volume de données atteint le niveau à un million de niveaux.

Résumer

Qu'il s'agisse de services de données basés sur la localisation ou de listes traditionnelles de pagination de données, les stratégies d'indexation efficaces sont toujours au cœur de l'optimisation de la base de données. L'utilisation d'index spatiaux et de formules Haversine dans MySQL peut rapidement réaliser le filtrage de l'emplacement géographique; Pendant que dans les scénarios de pagination, la combinaison d'index de champ et de limites peut améliorer l'efficacité de la récupération des données. Les développeurs doivent utiliser de manière flexible ces techniques en fonction de leurs scénarios commerciaux pour fournir un support solide pour les performances des applications.