Por exemplo, digamos que eu tenha uma tabela:
Business(BusinessID, Lattitude, Longitude)
Todos são indexados, é claro. Também existem 1 milhão de registros
Digamos que eu queira encontrar empresas mais próximas a 106,5, por exemplo, como eu faria isso?
Se eu fizer
SELECT *
FROM Business
WHERE (Some formula to compute distance here) < 2000
por exemplo, ou se eu fizer
SELECT *
FROM Business
TOP 20
Em teoria, o computador terá que calcular a distância para todos os negócios, enquanto na prática apenas aqueles com latitude e longitude dentro de um determinado intervalo que deve ser calculado.
Então, como posso fazer o que quero em PhP ou SQL, por exemplo?
Sou grato com a resposta até agora. Estou usando o mysql e eles não têm nada mais eficiente do que a solução óbvia. O MySQL espacial também não possui a função de distância computacional.