Konzentrieren Sie sich auf (a):
In der Vergangenheit habe ich Teile vorberechnet und Lat, Long, xaxis, yaxis und zxais gespeichert, wobei x, y &z wie folgt definiert sind:
xaxis = cos(radians(Lat)) * cos(radians(Lon))
yaxis = cos(radians(Lat)) * sin(radians(Lon))
zaxis = sin(radians(Lat))
Der Abstand kann dann mit SQL ungefähr wie (acos( xaxis * $xaxis + yaxis * $yaxis + zaxis * $zaxis ) * 6367.0 / 1.852)
berechnet werden (wobei diejenigen, die mit einem $ beginnen, für den betreffenden Startpunkt auf die gleiche Weise wie oben vorberechnet werden)
Die Vorabberechnung auf diese Weise verschiebt den relativ teuren Trigger auf ein einmaliges Ereignis und vereinfacht die Abfrage.