Was ist der schnellste Weg, große Tabellen nach Punkten im Radius MySQL (Latitude Longitude) zu durchsuchen?

erzeit habe ich ein paar Tabellen mit mehr als 100.000 Zeilen. Ich versuche, die Daten wie folgt nachzuschlagen.

SELECT
*, SQRT(POW(69.1 * (latitude - '49.1044302'), 2) + POW(69.1 * ('-122.801094' - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM stops
HAVING distance < 5
ORDER BY distance limit 100

Aber derzeit verlangsamt sich diese Methode mit hoher Last. Einige Abfragen dauern mindestens 20 Sekunden.

Wenn jemand bessere Möglichkeiten zur Optimierung kennt, wäre das großartig.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage