我需要返回數據庫中與給定點相當接近的所有條目。目前,我這樣做(在WHERE部分):查詢中的簡單功能
OR (
(Addresses.Latitude IS NOT NULL)
AND (Addresses.Longitude IS NOT NULL)
AND (Abs(Addresses.Latitude - @SearchInLat) < 0.5)
AND (Abs(Addresses.Longitude - @SearchInLng) < 0.5)
)
我做的曼哈頓距離而不是笛卡爾距離我的數據庫有大量的記錄,並計算平方根是緩慢的。
我對SQL數據庫相當陌生,但我記得在SELECT procudures中有一些函數被認爲效率很差。這是否甚至適用於真正簡單的功能,如取絕對值?是這樣的:
OR (
(Addresses.Latitude IS NOT NULL)
AND (Addresses.Longitude IS NOT NULL)
AND ((Addresses.Latitude - @SearchInLat) < 0.5)
AND ((Addresses.Latitude - @SearchInLat) > -0.5)
AND ((Addresses.Longitude - @SearchInLng) < 0.5)
AND ((Addresses.Longitude - @SearchInLng) > -0.5)
)
更好的解決方案?
我想你的意思是在第二個例子中刪除ABS。 –
我做了,謝謝。在提交之前我總是閱讀兩遍,但總是看起來錯過了一些東西! – Oliver