Hi Ryan,
There is a bit of a strange way around the distance overhead issue :
Create another table with structure like
(lat1,long1,zip1,lat2,long2,zip2,distance)
and precalculate the distance for each possibility. This means n*(n-1) rows
if you have n location rows. You would then include this table in your query
and use distance like you wanted to initially ( should work fast provided you
index it on lat1,long1,distance)
The calculation overhead of distance is then removed from your query ( at the
expense of some disk space ). The insert of each new location requires n
calculations of distance - you could perform this in the background I guess !
regards
Mark