Bref,
- Quel devrait être le type de données de latitude et de longitude?
- Quelle commande SQL dois-je appeler pour obtenir les 100 premiers restaurants les plus proches par exemple?
Détail:
J'ai 100k biz record chacun avec lattitude et longitude. Je vois que MySQL supporte en fait un type de données appelé point. Dois-je utiliser cela à la place?
MySQL prend-il en charge le système de stockage KDTree http://en.wikipedia.org/wiki/File:KDTree-animation.gif
Est-il préférable d'utiliser le type de données ponctuelles plutôt que le type de données flottant normal pour stocker la latitutude et la longitude?
Finalement, je veux trouver des choses comme les 100 premiers restaurants les plus proches des points 105,6 par exemple et mes bases de données contiennent beaucoup de biz et de points. Évidemment, calculer la distance un par un pour chaque enregistrement et pour chaque point serait O (n) et donc nul.
Notez que je connais une solution plus simple décrite dans Comment une application comme Yelp Récupère-t-elle efficacement les informations de distance de la base de données et que je les implémenterai moi-même pour commencer. Voilà une bonne réponse.
Cependant, je pense qu'il y a une crème de la réponse de la culture qui devrait surpasser ce droit? En fait, stocker l'emplacement en fonction de la latitude et de la longitude et trouver des objets les plus proches est un problème très courant, je m'attends à ce que mysql ait un modèle de conception spécial pour cela. At-il cela?
Où puis-je en savoir plus à ce sujet? Merci.