2010-06-30 2 views
8

Ich versuche ein MySQL-Schema zu entwerfen, das eine Liste von Benutzern mit einem zugehörigen Längen- und Breitengrad speichern kann.Was ist der beste Weg, effizient zu berechnen, welche Punkte mit MySQL in der Nähe eines gegebenen Lat/Long liegen?

Ich möchte dann für einen bestimmten Benutzer eine Abfrage erstellen, die ihm die nächsten 50 Benutzer zurückgeben und diese Benutzer nach Entfernung sortieren kann (wobei das nächste zuerst angezeigt wird).

Angesichts der Tatsache, dass es viele tausend Benutzer in dieser Tabelle gibt, was ist der effizienteste Weg, um diese Daten zu speichern und abzufragen?

+0

Haben Sie darüber nachgedacht, PostgreSQL zu untersuchen? Es unterstützt nativ räumliche Datentypen und verfügt über eine Reihe von Vergleichsoperatoren für Nähe, Einschließung, usw. – HorusKol

+0

MongoDB unterstützt sofort einsetzbaren Geospatial Index; Der Hauptanwendungsfall ist der gleiche, den Sie zusammengefasst haben (zB sind Ihre Beispielabfragen fast identisch mit denen auf der Mongo-Übersichtsseite zu G/I.) – doug

Antwort

5

Versuchen Sie, diesen Artikel zu lesen: Creating a Store Locator with PHP, MySQL & Google Maps Dieser Artikel zeigt eine MySQL-Lösung für die Haversine formula, die die beste Möglichkeit zur Berechnung der Entfernung gegeben Länge und Breite ist.

+0

Bill sind Sie StackOverflow, der mich verfolgt? Sie haben alle die gleichen Beiträge wie beantwortet ich heute .... –

+0

Nein, es ist nur so, dass tolle Köpfe gleich denken! :) –

Verwandte Themen