Pour améliorer les performances des requêtes de recherche de points sur de grandes tables contenant des données géospatiales, exploitez les fonctionnalités géospatiales de MySQL. En utilisant les index spatiaux de MySQL, vous pouvez améliorer considérablement la vitesse des requêtes.
Étape 1 : Convertir en type de données géospatiales
Convertissez vos colonnes de latitude et de longitude en données géospatiales MySQL tapez, GÉOMÉTRIE. Cela vous permet de profiter de fonctions spatiales et d'une indexation spécifiquement adaptées aux données géographiques.
Étape 2 : Créer un index spatial
Créez un index spatial sur la colonne GÉOMÉTRIE pour optimiser les requêtes impliquant des recherches spatiales. Cet index permettra des recherches de points efficaces dans un rayon donné.
Étape 3 : Utilisez ST_Distance ou ST_Within
Pour les requêtes qui impliquent des calculs de distance ou une inclusion dans un rayon, utilisez les fonctions ST_Distance ou ST_Within. Ces fonctions fournissent des résultats précis et optimisés pour les comparaisons géospatiales.
Exemple :
SELECT *, ST_Distance(location, ST_GeomFromText('POINT(49.1044302 -122.801094)')) AS distance FROM stops WHERE ST_Within(location, ST_Buffer(ST_GeomFromText('POINT(49.1044302 -122.801094)'), 5)) ORDER BY distance limit 100
Remarque supplémentaire :
Pendant que ST_Dwithin fournit l'approche la plus efficace pour les requêtes dans un rayon ; elle n'est actuellement pas implémentée dans MySQL. Il est recommandé de surveiller la disponibilité des futures versions.
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!