错误:数据类型tstzrange []在Postgres 10中没有访问方法“gist”的默认运算符类

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

我试图在PostgreSQL 10中为tstzrange[]列设置索引。我通过pgAdmin 4 GUI创建了列,将其名称和数据类型设置为tstzrange[]并将其设置为not null,仅此而已。

然后我为数据库做了一个CREATE EXTENSION btree_gist;并且它有效。

然后我在documentation看到我应该索引范围,我做:

CREATE INDEX era_ac_range_idx ON era_ac USING GIST (era_ac_range);

......但后来我得到了:

错误:数据类型tstzrange []没有访问方法“gist”的默认运算符类

坦率地说,我不知道它究竟意味着什么,或者如何解决它。我该怎么办 ?

PS,该列目前为空,尚无数据。

Ps2,这张表描述了按时间顺序排列的时代,有一个id,时代名称(例如六十年代)和时区范围(例如1960-1969)。用户插入日期,我想检查它属于哪个时代。

postgresql indexing timestamp-with-timezone
1个回答
1
投票

好吧,你有一组时间戳范围作为单个列。您可以使用GIN索引和带有(iirc)GIN或GiST的范围索引数组。但是,我不确定列的索引如何运行。我想你可以将它建模为N维r树或其他类似物。

我假设您要检查重叠范围。您是否可以规范化数据并在每行中有一个范围的链接表?

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