我试图在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)。用户插入日期,我想检查它属于哪个时代。
好吧,你有一组时间戳范围作为单个列。您可以使用GIN索引和带有(iirc)GIN或GiST的范围索引数组。但是,我不确定列的索引如何运行。我想你可以将它建模为N维r树或其他类似物。
我假设您要检查重叠范围。您是否可以规范化数据并在每行中有一个范围的链接表?