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