Focus op (a):
In het verleden heb ik onderdelen vooraf berekend, waarbij ik de lat, long, xaxis, yaxis en zxais heb opgeslagen, waarbij de x, y &z zijn gedefinieerd als:
xaxis = cos(radians(Lat)) * cos(radians(Lon))
yaxis = cos(radians(Lat)) * sin(radians(Lon))
zaxis = sin(radians(Lat))
De afstand kan dan worden berekend met behulp van SQL losjes zoals (acos( xaxis * $xaxis + yaxis * $yaxis + zaxis * $zaxis ) * 6367.0 / 1.852)
(waarbij degenen die beginnen met een $ vooraf zijn berekend voor het betreffende startpunt op dezelfde manier als hierboven)
Pre-computing op deze manier duwt de relatief dure trig naar een eenmalige gebeurtenis en vereenvoudigt de query.