Por ejemplo, digamos que tengo una tabla:
Business(BusinessID, Lattitude, Longitude)
Todos están indexados, por supuesto. También hay 1 millón de registros
Digamos que quiero encontrar negocios más cercanos a 106,5, por ejemplo, ¿cómo lo haría?
Si lo hago
SELECT *
FROM Business
WHERE (Some formula to compute distance here) < 2000
por ejemplo, o si lo hago
SELECT *
FROM Business
TOP 20
En teoría, la computadora tendrá que calcular la distancia para todos los negocios, mientras que en la práctica solo aquellos con latitud y longitud dentro de un cierto rango que deben calcularse.
Entonces, ¿cómo puedo hacer lo que quiero en PhP o SQL, por ejemplo?
Estoy agradecido con la respuesta hasta ahora. Estoy usando mysql y no tienen nada más eficiente que la solución obvia. MySQL espacial tampoco tiene función de cálculo de distancia.