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&nbsp;ao invés de3959.