我在SO上搜索並沒有真正找到答案,但它似乎是一個普遍的問題。高效搜索最近的地理位置
我在數據庫中有幾十萬個位置,每個位置都有地理編碼(lat/long)。如果它很重要,它們遍佈美國。現在,我有一個客戶端應用程序,我希望用戶給我他們的經緯度和半徑(比如說5米,10米,25米等),並且我想要返回所有的記錄匹配。我只關心可以通過例如Haversine公式獲得的距離值,而不是最短的道路距離。但是,鑑於此,我希望它儘可能準確。
此數據庫大部分是隻讀的。在美好的一天,可能會有10個插入。現在,我將擁有數百個客戶端,可能會有數以萬計的客戶使用該軟件。我希望用戶能夠在幾秒鐘內獲得結果,但如果單個查詢需要10-20秒,那麼當用戶加載時,它會抓取。
如何儘可能有效地提供結果?我知道我可以將它們存儲在MySQL或PostgreSQL中(Oracle和MS SQL Server出於此目的,但其他一些開源數據存儲可能沒問題),並將Haversine公式放在WHERE子句中,但我不認爲將產生有效的結果。
數據庫查詢的數量可能真的砸了服務器。因此,我會建議索引數據(本地Solr) – 2010-12-15 02:43:46
PostGIS的核心功能是一個空間索引,並對該索引進行高效的查詢。 – SingleNegationElimination 2010-12-15 03:36:45