Qual é a maneira mais rápida de procurar tabelas grandes em busca de pontos dentro do raio MySQL (latitude longitude)

Atualmente, tenho algumas tabelas com mais de 100 mil linhas. Eu estou tentando procurar os dados da seguinte maneira.

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

Mas atualmente esse método diminui com alta carga. Algumas consultas estão demorando mais de 20 segundos para serem concluídas.

Se alguém souber maneiras melhores de otimizar isso, seria ótimo.

questionAnswers(2)

yourAnswerToTheQuestion