Mysql
 sql >> Base de données >  >> RDS >> Mysql

Besoin d'aide pour optimiser une recherche géographique lat/long pour mysql

Je pense que vous devriez vraiment envisager l'utilisation de PostgreSQL (combiné avec Postgis).

J'ai abandonné MySQL pour les données géospatiales (pour l'instant) pour les raisons suivantes :

  • MySQL ne prend en charge que les types de données spatiaux/index spatiaux sur les tables MyISAM avec les inconvénients inhérents à MyISAM (concernant les transactions, l'intégrité référentielle...)
  • MySQL implémente certaines des spécifications OpenGIS uniquement sur une base MBR (rectangle de délimitation minimum) qui est assez inutile pour la plupart des traitements de requêtes géospatiales sérieuses (voirce lien dans le manuel MySQL ). Il y a de fortes chances que vous ayez besoin de certaines de ces fonctionnalités plus tôt ou plus tard.

PostgreSQL/Postgis avec les index spatiaux appropriés (GIST) et les requêtes appropriées peuvent être extrêmement rapides.

Exemple  :déterminer les polygones qui se chevauchent entre une "petite" sélection de polygones et un tableau contenant plus de 5 millions (!) de polygones très complexes, calculer la quantité de chevauchement entre ces résultats + trier. Durée d'exécution moyenne :entre 30 et 100 millisecondes (Cette machine particulière a bien sûr beaucoup de RAM. N'oubliez pas de régler votre installation PostgreSQL... (lisez la documentation)).