2010-06-30 20 views
8

Próbuję zaprojektować schemat MySQL, który może przechowywać listę użytkowników o skojarzonej szerokości i długości geograficznej.Jaki jest najlepszy sposób, aby skutecznie obliczyć, które punkty są zbliżone do danego czasu/długości za pomocą MySQL?

Byłbym wtedy, dla danego użytkownika, lubię zbudować zapytanie, które może zwrócić mu najbliższe 50 użytkowników i posortować tych użytkowników według odległości (z najbliższym prezentowanym jako pierwszy).

Biorąc pod uwagę, że w tej tabeli może być wiele tysięcy użytkowników, jaki jest najskuteczniejszy sposób przechowywania i wyszukiwania tych danych?

+0

Czy rozważałeś zaglądanie do PostgreSQL? to natywnie obsługuje typy danych przestrzennych i ma wiele operatorów porównania dla bliskości, obudowa, itp ... – HorusKol

+0

MongoDB obsługuje out-of-the-box Geospatial Index; główny przypadek użycia to ten sam, który podsumowałeś (np. Twoje przykładowe zapytania są prawie identyczne z tymi na stronie podsumowania Mongo na G/I.) – doug

Odpowiedz

5

Spróbuj przeczytać ten artykuł: Creating a Store Locator with PHP, MySQL & Google Maps Ten artykuł przedstawia rozwiązanie MySQL dla Haversine formula, które jest najlepszym sposobem obliczenia odległości podanej szerokości i długości geograficznej.

+0

Bill, czy Ty mnie prześladujesz StackOverflow? Odpowiadałeś na wszystkie te same posty, ja dzisiaj .... –

+0

Nie, tylko wielkie umysły myślą podobnie! :) –