MySQL Forums
Forum List  »  GIS

Zip Code Proximity search
Posted by: Gregor Melhorn
Date: October 19, 2004 06:04AM

I’m planning to do a dating community site in zope, with about 50 000 members and up to 10 000 members being logged in at the same time. Searching for other people is based on distance (search for all people in 50 km distance etc.), and I also have a database with geodata for all zip-codes.

So now there’s the problem: The search function will be used very often, and every different zip-code-query will of course generate different results. Also a new registered user will again generate different results. Searching is subclassed in different distances (“up to 50 km”, “up to 100 km” and so on...).

The returned search list is sorted by distance, with a distance value next to each member:

user1... 0,3 km
userxy... 2,5 km
userab... 5 km etc.

Regarding performance, I thought of creating large lookup-tables in mysql with all distances of all zip’s to all the other zips in this area and building an according select query for the user-list.

Maybe use five different tables, each for a different range of distance (0 - 50 km, 50 to 100 km etc.), adding them in the queries as needed and indexed on the zip-code I want my range search to look for.

I know there's also a solution using an SQL-Query based on longitude/latitude values, but I suppose this to be slower than selecting from multiple tables, since it has to be calculated on every request?

----$lat1 = $aCoords[0]; //--latitude of originating zip
$lon1 = $aCoords[1]; //--longitude of originating zip
$within = $DIS; //--radius sesarch distance in miles

$strSQL = "SELECT ZIPCode, Latitude, Longitude FROM zipcode WHERE
(3958*3.1415926*sqrt((Latitude-'$lat1')*(Latitude-'$lat1') +
cos(Latitude/57.29578)*cos('$lat1'/57.29578)*(Longitude-'$lon1')*(Longitude-'$lon1'))/180)
<= $within";
----

Or is it faster to use another database system for this job? Any help would be appreciated...

Regards
Gregor

Options: ReplyQuote


Subject
Views
Written By
Posted
Zip Code Proximity search
28238
October 19, 2004 06:04AM
10878
October 19, 2004 07:55AM
9282
October 19, 2004 11:14AM
10316
October 21, 2004 09:28AM
9199
October 19, 2004 06:59PM
7657
October 20, 2004 07:39AM
7667
October 21, 2004 09:10AM
8913
October 22, 2004 07:17AM
6838
October 23, 2004 02:48AM
6266
October 23, 2004 03:09AM
6371
October 23, 2004 03:12AM
6266
October 23, 2004 02:59PM
8029
October 24, 2004 12:34PM
5555
October 24, 2004 01:31PM
13169
October 21, 2005 10:21AM
5609
D C
January 28, 2006 05:24AM
5157
March 02, 2006 04:24PM
7251
October 09, 2007 09:28AM
5776
December 06, 2005 05:34AM
7054
December 06, 2005 06:36AM
5348
December 24, 2005 01:10PM
8881
December 26, 2005 03:49PM
5474
October 09, 2007 09:36AM
29462
December 13, 2007 04:10PM
6215
April 05, 2006 02:59PM
4746
May 02, 2006 03:22PM
5710
May 05, 2006 09:44AM
14625
June 25, 2006 09:32PM
5537
August 30, 2006 12:54PM
6057
July 14, 2007 01:09AM
7670
November 03, 2006 10:25AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.