Để tập trung vào (a):
Trước đây, tôi đã tính toán trước các bộ phận, lưu trữ vĩ độ, dài, xaxis, yaxis và zxais, trong đó x, y &z được định nghĩa là:
xaxis = cos(radians(Lat)) * cos(radians(Lon))
yaxis = cos(radians(Lat)) * sin(radians(Lon))
zaxis = sin(radians(Lat))
Khoảng cách sau đó có thể được tính toán bằng cách sử dụng SQL một cách lỏng lẻo như (acos( xaxis * $xaxis + yaxis * $yaxis + zaxis * $zaxis ) * 6367.0 / 1.852)
(trong đó những điểm bắt đầu bằng $ được tính trước cho điểm bắt đầu được đề cập theo cách tương tự như trên)
Tính toán trước theo cách này đẩy trig tương đối đắt tiền thành sự kiện một lần và đơn giản hóa truy vấn.