SQL Server距离搜索

4

我有一个Microsoft SQL Server数据库,其中包含位置表。每个位置都有其地址和纬度和经度坐标。

在我的应用程序中,用户可以输入邮政编码,我们会返回附近位置的列表。 这是我的方法。 a)使用邮政编码数据库搜索邮政编码的纬度和经度(这是中心点)。 b)我运行以下搜索

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

"distance"是一个计算两点之间距离的函数。

问题在于随着我的位置数据库增加,运行这些搜索所需的时间开始增加。

是否有更好的方法?


1
什么版本的SQL?如果是2008,请参考Mark Byers的下面的答案。 - Chris Simmons
3个回答

5

1
我会计算以指定距离为半径的包围您邮政编码的正方形的经纬度值,然后对您的位置值进行简单比较,以选择落在正方形内的那些点。这样,您就不必在每次搜索时计算从您的邮政编码到数据库中每个点的距离。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接