【发布时间】:2012-05-28 09:00:43
【问题描述】:
我对 gist 索引有疑问。 我有表格'国家'和'geog'(地理,多面体)柱状。 我也有这个专栏的要点索引。 这个使用 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 秒。
我已经做了什么:
- 真空分析 gis.country(“geog”)
- 也许这就是问题所在:“不要以 GEOMETRYCOLLECTION 作为参数调用”我读过 (http://www.mail-archive.com/postgis-users@postgis.refractions.net/msg17780.html),这是因为多边形重叠,但在国家地图中不存在重叠多边形
编辑
查询计划 -
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)
【问题讨论】:
-
请发布查询计划。该索引几乎不会用于具有
2行的表。 -
在国家 c 上使用 sindx_country_geography_col1 进行索引扫描(成本=0.00..8.52 行=1 宽度=4)索引条件:('0101000020E61000000000000000E0204000000000204A4D40'::geography && "geog")过滤器:_st_cover ", '0101000020E61000000000000000E0204000000000204A4D40'::地理)
-
查询确实使用了索引。
标签: postgresql indexing gis postgis spatial