如何知道函数的哪个参数是PostgreSQL表中的一列?

问题描述 投票:0回答:1

我将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索引中,我想始终扩展查询而不是列,以便使用索引。 (如果我理解正确,如果我在该列内展开框,则无法使用索引?)

这有什么用吗?例如,使用规则重写查询吗?

postgresql indexing gis postgis
1个回答
0
投票

我想我找到了这个答案...它使用对称格式:

'SELECT $1 OPERATOR(@extschema@.&&) @[email protected]_Expand($2,$3) AND $2 OPERATOR(@extschema@.&&) @[email protected]_Expand($1,$3) AND @extschema@._ST_DWithin($1, $2, $3)'

所以任何一方都可以使用该索引(我猜这会增加计算成本)

© www.soinside.com 2019 - 2024. All rights reserved.