2010-02-17 71 views
4

我有一个Microsoft SQL Server数据库与地点表。每个位置都有其地址和经度和纬度坐标。SQL Server的距离搜索

在我的应用程序中,用户可以输入一个邮政编码,然后我们返回一个按位置关闭的列表。 这是我的方法。 a)使用邮政编码数据库我搜索经纬度,邮政编码(这是中心点)。 b)中我运行这样

SELECT Position_ID, distance(pos_lon,pos_lat,zip_lon,zip_lat) dist 
FROM Positions 
ORDER BY dist 

“距离”的搜索是计算两个点之间的距离的函数。

问题是,由于我的位置数据库增加了运行时间,所以这些搜索正在开始增长。

有没有更好的方法?

+1

什么版本的SQL?如果是2008年,请参阅下面的马克·拜尔斯的回答。 –

回答

1

我会做在指定距离周围的邮政编码框的计算,以获得经/纬度值的四个角。然后做一个简单的比较你的位置值来选择那些落在正方形内部的值。这样,您无需计算每次搜索时从您的邮政编码到您数据库中每个点的距离。