我的要点索引有问题。 我有表“国家”和“地理”(地理,多重多边形)列。 我在这个专栏上也有要点索引。 这个使用 ST_CoveredBy() 对 2 行表(每个“geog”约 5MB)的简单查询需要 13 秒(查询结果是正确的):
select c."ID" from gis.country c where ST_CoveredBy(ST_GeogFromText('SRID=4326;POINT(8.4375 58.5791015625)'), c."geog") =true
当我删除索引时,查询也花了 13 秒。
我已经做了什么:
- VACUUM ANALYZE gis.country(“geog”)
- 也许这就是问题所在:“不要以 GEOMETRYCOLLECTION 作为参数调用”我读过( http://www.mail-archive.com/[email protected]/msg17780.html ),这是因为重叠的多边形,但在国家 map 中不存在重叠的多边形
编辑
查询计划 -
Index Scan using sindx_country_geography_col1 on country c (cost=0.00..8.52 rows=1 width=4)
Index Cond: ('0101000020E61000000000000000E0204000000000204A4D40'::geography && "geog")
Filter: _st_covers("geog", '0101000020E61000000000000000E0204000000000204A4D40'::geography)
最佳答案
对只有两行的表进行索引查询不会带来任何好处。仅当您有数百或更多行要查询时,索引的好处才会显现出来。
我猜你有两个非常详细的国家多边形。有一些策略可以将它们划分为网格以提高性能。如何将国家/地区分解为网格应基于 (1) 您感兴趣的区域(您最有可能查询的区域)的密度,以及 (2) 多多边形复杂性或顶点密度。
关于postgresql - postgis 中的空间要点索引 - 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10692399/