2010-02-17 101 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

我會做在指定距離周圍的郵政編碼框的計算,以獲得經/緯度值的四個角。然後做一個簡單的比較你的位置值來選擇那些落在正方形內部的值。這樣,您無需計算每次搜索時從您的郵政編碼到您數據庫中每個點的距離。