Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser efficacement les valeurs de longitude/latitude dans Mysql ?

Pour se concentrer sur (a) :

Dans le passé, j'ai précalculé des parties, en stockant les lat, long, xaxis, yaxis et zxais, où les x, y et z sont définis comme :

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

La distance peut ensuite être calculée en utilisant SQL de manière approximative comme (acos( xaxis * $xaxis + yaxis * $yaxis + zaxis * $zaxis ) * 6367.0 / 1.852) (où ceux commençant par un $ sont précalculés pour le point de départ en question de la même manière que ci-dessus)

Le pré-calcul de cette manière pousse le déclencheur relativement coûteux vers un événement ponctuel et simplifie la requête.