Maneira mais rápida de encontrar a distância entre dois pontos lat / long
Eu atualmente tenho pouco menos de um milhão de locais em um banco de dados mysql, todos com informações de longitude e latitude.
Eu estou tentando encontrar a distância entre um ponto e muitos outros pontos através de uma consulta. Não é tão rápido quanto eu quero que seja especialmente com mais de 100 acessos por segundo.
Existe uma consulta mais rápida ou possivelmente um sistema mais rápido que o mysql para isso? Estou usando esta consulta:
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;
Nota: A distância fornecida é emMilhas. Se você precisarQuilômetros, usar6371
ao invés de3959
.