我有一個酒店列與ID,名稱,描述,LONGITUDE,緯度。 現在,我想獲得給定半徑(4英里)內的所有酒店,並以中等長度的價值爲中心。我已執行它如下查詢:從oracle數據庫獲取酒店詳情給定經度和緯度
select NAME from (SELECT
NAME , (
6371 * acos (
cos (3.14*(52.047348)/180)
* cos(3.14*(latitude)/180)
* cos(3.14*(longitude)/180 - 3.14*(1.15542)/180)
+ sin (3.14*(52.047348)/180)
* sin(3.14*(latitude)/180)
)
) AS distance
FROM hotel where latitude is not null and longitude is not null) where distance < 4;
這是給正確recored。 但是對於大型記錄來說非常慢。 任何人都可以請我提供替代方法來做到這一點。我已經完成了它的研究,並且知道oracle數據庫中有一個幾何體。在它的幫助下,我們可以通過在商店表中創建幾何列來實現它。 但我不知道該怎麼做。 請告訴我該怎麼做。
M y方法是:計算具有給定半徑的矩形,並使用BETWEEN中的經度和緯度的最小值和最大值查找該區域中的酒店。 –