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

¿Cómo utilizo los valores de longitud/latitud de manera eficiente en Mysql?

Para centrarse en (a):

En el pasado, precalculé partes, almacenando la latitud, longitud, eje x, eje y y zxais, donde x, y y z se definen como:

xaxis = cos(radians(Lat)) * cos(radians(Lon))
yaxis = cos(radians(Lat)) * sin(radians(Lon))
zaxis = sin(radians(Lat))

Luego, la distancia se puede calcular usando SQL libremente como (acos( xaxis * $xaxis + yaxis * $yaxis + zaxis * $zaxis ) * 6367.0 / 1.852) (donde los que comienzan con $ se calculan previamente para el punto de inicio en cuestión de la misma manera que arriba)

La precomputación de esta manera lleva la activación relativamente costosa a un evento de una sola vez y simplifica la consulta.