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
zamiast3959
.