Postgresql Postgres如何将空间和非空间数据合并到一个索引中

Postgresql Postgres如何将空间和非空间数据合并到一个索引中,postgresql,Postgresql,据我所知,我们可以在空间数据(如地理空间)和非空间数据(如时间)上创建多列索引 我还读到,Postgres使用B+树作为时间戳、整数等的默认数据结构,使用R-树作为空间数据的默认数据结构 但是,我不明白这两种数据类型(例如地理空间和时间戳)如何组合成一个索引(就如何创建底层数据结构而言) 例如,如果我们在两个整数列上创建了一个索引,我们将使用多列B+树数据结构(如下所述) 对于空间和非空间,这将如何工作?我们会在B-树的叶子上嵌入R-树还是反之亦然?还是别的什么 请澄清。GiST索引是B-树索引

据我所知,我们可以在空间数据(如地理空间)和非空间数据(如时间)上创建多列索引

我还读到,Postgres使用B+树作为时间戳、整数等的默认数据结构,使用R-树作为空间数据的默认数据结构

但是,我不明白这两种数据类型(例如地理空间和时间戳)如何组合成一个索引(就如何创建底层数据结构而言)

例如,如果我们在两个整数列上创建了一个索引,我们将使用多列B+树数据结构(如下所述)

对于空间和非空间,这将如何工作?我们会在B-树的叶子上嵌入R-树还是反之亦然?还是别的什么


请澄清。

GiST索引是B-树索引的泛化

粗略地说,不同之处在于,非叶页面中的每个向下指针都与两个值之间的间隔无关,而是与通用搜索条件相关。在地理空间数据的情况下,此广义搜索条件是一个边界框:如果搜索的项目与边界框重叠,则必须从索引树的该分支向下搜索

由于GiST索引是广义B树索引,因此很容易将B树索引作为GiST索引的特例来实现。通常不会这样做,因为常规的B-树索引经过高度优化,性能会更好,但它对于多列GiST索引很有用

要将GiST索引与“常规”完全有序的数据类型一起使用,您需要安装其他必需的运算符类

CREATE EXTENSION btree_gist;