sql >> Base de Datos >  >> RDS >> Mysql

Cómo encontrar de manera eficiente las ubicaciones más cercanas cercanas a una ubicación determinada

Creo que lo que estás tratando de lograr podría hacerse mejor usando la fórmula de Haversine en su SQL. Google tiene un tutorial sobre cómo obtener las ubicaciones más cercanas en una base de datos MySQL pero la idea general es este 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;

Luego, todo el trabajo que necesita hacer se realiza en la base de datos, por lo que no tiene que incluir todas las empresas en su secuencia de comandos PHP incluso antes de verificar la distancia.