Postgis - ST_DWithin再次表现

时间:2014-06-02 20:08:27

标签: performance postgresql postgis gis

我有一个名为global_points的示例表,其中包含随机地理点的500万条记录。

我已使用CREATE INDEX global_points_gix ON public.global_points USING gist (location);

创建了一个索引

我通过polygon执行地理(非几何)搜索:

SELECT count(*) from global_points 
WHERE ST_DWithin(location, 'SRID=4326; POLYGON((0 0, 50 0, 50 50, 0 0))', 0);

在我的电脑上执行此查询大约需要30秒(硬盘,2核2.8GHz,8GB内存)。

我尝试了一些技巧(例如将多边形定义放在一个单独的表中:

SELECT  count(*)
FROM global_points a , polygons b
WHERE ST_DWithin(b.location,a.location ,5e-05) and b.id=2;

但这没有显着的性能提升。

我也在没有索引的情况下在表上执行了这个搜索,但是再次对上面的多边形表没有区别。对于较小的索引多边形表,查询更快。

可以做任何其他事情来提高性能吗?我知道地理搜索很复杂,但索引应该可以提高搜索速度。

0 个答案:

没有答案