postgresql - postgis 中的空间要点索引 - 性能

标签 postgresql indexing gis postgis spatial

我的要点索引有问题。 我有表“国家”和“地理”(地理,多重多边形)列。 我在这个专栏上也有要点索引。 这个使用 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 秒。

我已经做了什么:

编辑

查询计划 -

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/

相关文章:

algorithm - 谷歌抓取索引算法

postgresql - 全文 Postgres

c# - F#(或 C#)中的任何 R-Tree 实现?

ruby-on-rails - Ruby GIS - 将 NAD83 转换为 WGS84

mysql - 优化多连接查询

mapping - 查找某个位置的城市和邮政编码

postgresql - 使用连字符和数字进行 Postgres 全文搜索

sql - PostgreSQL 中具有互换列值的行的聚合

sql - 如何在没有记录的情况下有选择地加入另一个表中具有不同日期范围的日历表以获取计数?

postgresql - Amazon redshift 中的每月保留