Schnellste Methode, um die Entfernung zwischen zwei Lat / Long-Punkten zu ermitteln

Ich habe derzeit knapp eine Million Standorte in einer MySQL-Datenbank, alle mit Längen- und Breitengradangaben.

Ich versuche den Abstand zwischen einem Punkt und vielen anderen Punkten über eine Abfrage zu ermitteln. Es ist nicht so schnell, wie ich es mir wünsche, besonders bei mehr als 100 Treffern pro Sekunde.

Gibt es dafür eine schnellere Abfrage oder möglicherweise ein anderes schnelleres System als mysql? Ich benutze diese Abfrage:

<code>SELECT 
  name, 
   ( 3959 * acos( cos( radians(42.290763) ) * cos( radians( locations.lat ) ) 
   * cos( radians(locations.lng) - radians(-71.35368)) + sin(radians(42.290763)) 
   * sin( radians(locations.lat)))) AS distance 
FROM locations 
WHERE active = 1 
HAVING distance < 10 
ORDER BY distance;
</code>

Hinweis: Der angegebene Abstand ist inMeilen. Wenn Sie brauchenKilometer, benutzen6371 anstatt3959.

Antworten auf die Frage(16)

Ihre Antwort auf die Frage