我在PostGIS中使用以下最近邻查询:
SELECT g1.gid g2.gid FROM points as g1, polygons g2
WHERE g1.gid <> g2.gid
ORDER BY g1.gid, ST_Distance(g1.the_geom,g2.the_geom)
LIMIT k;
现在,我已经在两个表的the_geom和gid列上创建了索引,但这个查询却比涉及两个表之间空间连接的其他空间查询需要更多时间。
有没有更好的方法来查找K近邻?我正在使用PostGIS。
另一个查询尽管在几何列上创建了索引,但却需要异常长的时间:
select g1.gid , g2.gid from polygons as g1 , polygons as g2
where st_area(g1.the_geom) > st_area(g2.the_geom) ;
我认为,这些查询不会受到gist索引的好处,但是为什么呢?
而这个查询语句:
select a.polyid , sum(length(b.the_geom)) from polygon as a , roads as b
where st_intersects(a.the_geom , b.the_geom);
尽管涉及比多边形或点表更大的"roads"表,还涉及更复杂的空间运算符,但会在一段时间后返回结果。
EXPLAIN ANALYZE SELECT ....
的结果?这样或许我们就能知道出了什么问题。 - Thilo