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

Configuración de la tabla de latitud y longitud de MySQL

Debe almacenar los puntos en una sola columna de tipo de datos Point que puede indexar con un SPATIAL índice (si su tipo de tabla es MyISAM ):

CREATE SPATIAL INDEX sx_place_location ON place (location)

SELECT  *
FROM    mytable
WHERE   MBRContains
               (
               LineString
                       (
                       Point($x - $radius, $y - $radius),
                       Point($x + $radius, $y + $radius)
                       )
               location
               )
        AND Distance(Point($x, $y), location) <= $radius

Esto mejorará drásticamente la velocidad de consultas como "buscar todo dentro de un radio dado".

Tenga en cuenta que es mejor usar simple TM coordenadas métricas (este y norte) en lugar de polares (latitud y longitud). Para radios pequeños, son lo suficientemente precisos y los cálculos se simplifican enormemente. Si todos tus puntos están en un hemisferio y están lejos de los polos, puedes usar un solo meridiano central.

Todavía puedes usar coordenadas polares, por supuesto, pero las fórmulas para calcular el MBR y la distancia será más compleja.