sql >> Base de Datos >  >> RDS >> Mysql

Necesita ayuda para optimizar una búsqueda geográfica de latitud/longitud para mysql

Creo que realmente debería considerar el uso de PostgreSQL (combinado con Postgis).

He renunciado a MySQL para datos geoespaciales (por ahora) por las siguientes razones:

  • MySQL solo admite tipos de datos espaciales/índices espaciales en tablas MyISAM con las desventajas inherentes de MyISAM (en relación con transacciones, integridad referencial...)
  • MySQL implementa algunas de las especificaciones de OpenGIS solo sobre una base MBR (rectángulo delimitador mínimo), lo que es bastante inútil para la mayoría de los procesamientos de consultas geoespaciales serios (ver este enlace en el manual de MySQL ). Lo más probable es que necesite algunas de estas funciones más pronto que tarde.

PostgreSQL/Postgis con índices espaciales adecuados (GIST) y consultas adecuadas puede ser extremadamente rápido.

Ejemplo :determinar polígonos superpuestos entre una selección 'pequeña' de polígonos y una tabla con más de 5 millones (!) polígonos muy complejos, calcular la cantidad de superposición entre estos resultados + ordenar. Tiempo de ejecución promedio:entre 30 y 100 milisegundos (esta máquina en particular tiene mucha RAM, por supuesto. No olvide ajustar su instalación de PostgreSQL... (lea los documentos)).