Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como utilizo valores de longitude/latitude de forma eficiente no Mysql?


Para focar em (a):

No passado, eu pré-calculei partes, armazenando o lat, long, xaxis, yaxis e zxais, onde x, y &z são definidos como:
xaxis = cos(radians(Lat)) * cos(radians(Lon))
yaxis = cos(radians(Lat)) * sin(radians(Lon))
zaxis = sin(radians(Lat))

A distância pode ser calculada usando SQL vagamente como (acos( xaxis * $xaxis + yaxis * $yaxis + zaxis * $zaxis ) * 6367.0 / 1.852) (onde aqueles que começam com $ são pré-calculados para o ponto inicial em questão da mesma maneira que acima)

A pré-computação dessa maneira empurra o trigonômetro relativamente caro para um evento único e simplifica a consulta.