Najszybszy sposób na znalezienie odległości między dwoma punktami Lat / Long

Obecnie mam prawie milion lokalizacji w bazie danych mysql, wszystkie z informacjami o długości i szerokości geograficznej.

Próbuję znaleźć odległość między jednym punktem a wieloma innymi punktami za pomocą zapytania. Nie jest tak szybki, jak chciałbym, żeby był szczególnie, ponieważ 100+ trafień na sekundę.

Czy jest do tego szybsze zapytanie lub może szybszy system niż mysql? Używam tego zapytania:

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;

Uwaga: Podana odległość jest podanaMiles. Jeśli potrzebujeszKilometry, posługiwać się6371&nbsp;zamiast3959.