【发布时间】:2020-06-04 07:25:02
【问题描述】:
我正在将 PostgreSQL 与 GisT 和 PostGIS 一起使用,我想找到与查询几何的距离在阈值内的几何。所以首先,我应该扩展查询的边界框,其次,我应该将扩展的边界框传递到 Gist 索引中。
我认为这两个查询的语言含义:SELECT * FROM table WHERE DWithin(querygeom, table.col) 和 SELECT * FROM table WHERE DWithin(table.col, querygeom) 是相同的,其中 tabel.col 是几何列,而 querygeom 是我传入的静态几何。但是,正如我所拥有的table.col 上的 GisT 索引,我想始终扩展查询,而不是列,以便使用索引。 (如果我理解正确,如果我展开该列内的框,我不能使用索引?)
这有什么办法吗?比如使用规则重写查询?
【问题讨论】:
-
"我想始终扩展查询,而不是列" - 该语句没有意义(至少对我而言)。 ST_DWithin 的参数只是“值”——它们都不是“表”或“查询”。
-
您能否详细说明
query是ST_DWithin的参数?您的意思是返回单个几何的子查询吗? -
@JimJones 抱歉误导,我只是使用“查询”来代表我传递给函数的另一个几何图形...修改了问题。
-
@a_horse_with_no_name 错误,我的意思是一列几何图形
-
@JimJones 非常感谢,我发现我误解了它的逻辑
标签: postgresql indexing gis postgis