Par exemple, disons que j'ai une table:
Business(BusinessID, Lattitude, Longitude)
Tous sont bien sûr indexés. Il y a aussi 1 million d'enregistrements
Supposons que je veuille trouver des entreprises les plus proches de 106,5, par exemple, comment dois-je procéder?
Si je fais
SELECT *
FROM Business
WHERE (Some formula to compute distance here) < 2000
par exemple, ou si je le fais
SELECT *
FROM Business
TOP 20
En théorie, l'ordinateur devra calculer la distance pour tous les biz alors qu'en pratique, seuls ceux dont la lattitude et la longitude se situent dans une certaine plage devraient être calculés.
Alors, comment puis-je faire ce que je veux en PhP ou en SQL, par exemple?
Je suis reconnaissant de la réponse jusqu'à présent. J'utilise mysql et ils n'ont rien de plus efficace que la solution évidente. MySQL spatial n'a pas non plus de fonction de calcul de distance.