Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como encontrar com eficiência os locais mais próximos próximos a um determinado local


Acho que o que você está tentando alcançar poderia ser feito melhor usando a fórmula de Haversine em seu SQL. O Google tem um tutorial sobre como obter os locais mais próximos em um banco de dados MySQL mas a ideia geral é esse SQL:
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) )
  * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) 
  * sin( radians( lat ) ) ) ) AS distance
FROM markers
HAVING distance < 25
ORDER BY distance LIMIT 0 , 20;

Então, todo o trabalho que você precisa fazer é feito no banco de dados, para que você não precise colocar todos os negócios em seu script PHP antes mesmo de verificar a distância.