【问题标题】:Any method in PostgreSQL to create mutiple index entries on the same datumPostgreSQL 中在同一数据上创建多个索引条目的任何方法
【发布时间】:2020-04-25 05:26:38
【问题描述】:
我正在索引 PG 中的一些空间对象,此时我正在使用 PG 和 PostGis 来构建 R-tree。但是,有些对象太大而无法索引,所以我想先将它们拆分为更小的部分,然后按更小的部分对其进行索引。
但是,我阅读了 Gist 的文档,发现没有地方可以拆分(在索引级别)一个数据,除非我先在原始关系中拆分它们。
有什么办法可以在 Gist 中解决这个问题吗?或者有没有其他框架可以解决这个问题?或者为什么在PG下不可能?
【问题讨论】:
标签:
postgresql
indexing
gis
postgis
【解决方案1】:
这取决于你想对索引做什么。
一种选择不是索引对象本身,而是简化版本:
CREATE INDEX ON atable USING gist (st_simplify(geom, 1, TRUE));
然后将其用作前置过滤器:
SELECT ... FROM atable
WHERE st_intersects(st_simplify(geom, 1, TRUE), GEOMETRY '...')
AND st_intersects(geom, GEOMETRY '...');
即可以使用索引。问题在于简化的几何图形可能不相交,因此在极端情况下可能会出现误报。