postgres 空间索引

Posted

技术标签:

【中文标题】postgres 空间索引【英文标题】:postgres spatial indexing 【发布时间】:2010-10-15 18:09:06 【问题描述】:

我似乎找不到太多关于此的文档。 在postgres上创建数据库/表支持这样的查询的最简单方法是什么 SELECT * FROM table WHERE distance(POINT(0,0), table.location)

【问题讨论】:

【参考方案1】:

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

【讨论】:

请记住,地球不是平的。这种平面计算在一般情况下效果不佳。【参考方案2】:

您是否研究过 Postgis 和 contrib/earthdistance?

http://www.postgis.org/

http://www.postgresql.org/docs/9.0/interactive/earthdistance.html

【讨论】:

以上是关于postgres 空间索引的主要内容,如果未能解决你的问题,请参考以下文章

用于在度量空间中进行索引和搜索的很好解释的算法

Postgres的CREATE UNIQUE INDEX似乎停留了一段时间

空间索引的空间索引类型

Mysql空间索引

oracle查看索引表空间的使用情况

深入浅出空间索引:2