Mysql
 sql >> Database >  >> RDS >> Mysql

Come trovare in modo efficiente i luoghi più vicini nelle vicinanze di un determinato luogo

Penso che quello che stai cercando di ottenere potrebbe essere fatto meglio usando la formula Haversine nel tuo SQL. Google ha un tutorial su come ottenere le posizioni più vicine in un database MySQL ma l'idea generale è questo 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;

Quindi tutto il lavoro che devi fare viene svolto sul database, quindi non devi inserire tutte le attività nel tuo script PHP prima ancora di controllare la distanza.