Mysql
 sql >> Database >  >> RDS >> Mysql

Come posso utilizzare i valori di longitudine/latitudine in modo efficiente in MySQL?

Per concentrarsi su (a):

In passato, ho precalcolato le parti, memorizzando lat, long, xaxis, yaxis e zxais, dove x, y e z sono definite come:

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

La distanza può quindi essere calcolata utilizzando SQL liberamente come (acos( xaxis * $xaxis + yaxis * $yaxis + zaxis * $zaxis ) * 6367.0 / 1.852) (dove quelli che iniziano con $ sono precalcolati per il punto di partenza in questione nello stesso modo di cui sopra)

Il pre-calcolo in questo modo spinge il trigger relativamente costoso a un evento occasionale e semplifica la query.