Entonces, en resumen,
- ¿Cuál debería ser el tipo de datos de latitud y longitud?
- ¿Qué comando SQL debo llamar para obtener los primeros 100 restaurantes más cercanos, por ejemplo?
Detalle:
Tengo 100k biz record cada uno con latitud y longitud. Veo que MySQL realmente admite un tipo de datos llamado punto. ¿Debo usar eso en su lugar?
¿MySQL es compatible con el sistema de almacenamiento KDTree http://en.wikipedia.org/wiki/File:KDTree-animation.gif
¿Es mejor usar el tipo de datos de punto en lugar del tipo de datos flotante regular para almacenar latitud y longitud?
Finalmente, quiero encontrar cosas como los primeros 100 restaurantes más cercanos a los puntos 105,6, por ejemplo, y mis bases de datos contienen muchos negocios y puntos. Obviamente, calcular la distancia uno por uno para cada registro y para cada punto sería O (n) y, por lo tanto, es una mierda.
Tenga en cuenta que conozco una solución más simple que se describe en Cómo Aplicación como Yelp Recuperar información de distancia de la base de datos de manera eficiente y la implementaré yo también para empezar. Esa es una buena respuesta.
Sin embargo, creo que hay una crema de la respuesta del cultivo que debería superar ese derecho? De hecho, almacenar la ubicación en función de la latitud y la longitud y encontrar las cosas más cercanas es un problema muy común, espero que mysql tenga un patrón de diseño especial para eso. ¿Tiene eso?
¿Dónde puedo obtener más información al respecto? Gracias.