我正在为PG中的一些空间对象建立索引,这时我将PG与PostGis结合使用来构建R树。但是,有些对象太大而无法索引,因此我想先将它们拆分为较小的部分,然后再按较小的部分进行索引。
但是,我阅读了Gist的文档,发现没有地方可以分割(在索引级别)一个基准,除非我首先按原始关系分割它们。
有什么办法可以在Gist中解决此问题?还是有其他框架可以解决此问题?还是为什么在PG下不可能?
取决于您究竟要对索引执行什么操作。
一个选择不是索引对象本身,而是简化版本:
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 '...');
可以使用索引。问题在于,简化的几何可能不相交,因此在极端情况下您可能会得到假阴性。