小编典典

Postgres空间索引

sql

我似乎找不到太多的文档。在支持这种查询的PostgreSQL上创建数据库/表的最简单方法是什么?SELECT * FROM table WHEREdistance(POINT(0,0),table.location)<= 1000m;
其中POINT(0,0)和table.location应该是经度/纬度对,并且1000m是1000米。我应该如何索引该表?谢谢。


阅读 179

收藏
2021-03-23

共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

2021-03-23