¿Cuál es la forma más rápida de buscar tablas grandes para puntos dentro del radio MySQL (latitud, longitud)

Actualmente tengo algunas tablas con más de 100k filas. Estoy tratando de buscar los datos de la siguiente manera.

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

Pero actualmente este método se ralentiza con alta carga. Algunas consultas tardan más de 20 segundos en completarse.

Si alguien conoce alguna forma mejor de optimizar esto, sería genial.

Respuestas a la pregunta(2)

Su respuesta a la pregunta