2010-10-15 97 views
3

我似乎無法找到關於此的很多文檔。 在postgres上創建數據庫/表的最簡單方法是支持這樣的查詢SELECT * FROM table WHERE distance(POINT(0,0),table.location)< = 1000m; 其中POINT(0,0)和table.location應該是緯度/經度對,1000m是1000米。我該如何去索引這張表呢? 謝謝。postgres空間索引

回答

5

的表情,也部分索引PostgreSQL的支持索引,你也許可以將它們混合。

這僅僅是一個隨機的猜測,我不知道,如果它的工作原理,但不妨一試:

CREATE INDEX foobar ON table (distance(POINT(0,0), location)) 
WHERE distance(POINT(0,0), location) <= 1000; 

http://www.postgresql.org/docs/9.0/interactive/indexes-expressional.html

http://www.postgresql.org/docs/9.0/interactive/indexes-partial.html

+3

記住,地球不是平的。這種平面計算在一般情況下不會運行良好。 – skalee 2013-02-12 17:26:26