Postgresql 错误:数据类型tstzrange[]没有Postgres 10中访问方法“gist”的默认运算符类
我正在尝试为PostgreSQL 10中的tstzrange[]列设置索引。我通过pgAdmin 4 GUI创建了该列,将其名称和数据类型设置为tstzrange[],并将其设置为NOTNULL,仅此而已 然后我创建了一个扩展btree_gist;对于数据库,它起了作用 然后,我在中看到,我应该为范围编制索引,我做了:Postgresql 错误:数据类型tstzrange[]没有Postgres 10中访问方法“gist”的默认运算符类,postgresql,indexing,timestamp-with-timezone,Postgresql,Indexing,Timestamp With Timezone,我正在尝试为PostgreSQL 10中的tstzrange[]列设置索引。我通过pgAdmin 4 GUI创建了该列,将其名称和数据类型设置为tstzrange[],并将其设置为NOTNULL,仅此而已 然后我创建了一个扩展btree_gist;对于数据库,它起了作用 然后,我在中看到,我应该为范围编制索引,我做了: CREATE INDEX era_ac_range_idx ON era_ac USING GIST (era_ac_range); …但我得到: 错误:数据类型tstzran
CREATE INDEX era_ac_range_idx ON era_ac USING GIST (era_ac_range);
…但我得到:
错误:数据类型tstzrange[]没有默认的运算符类
存取方法要点
坦白说,我不知道这到底意味着什么,也不知道如何解决它。我该怎么办
PS,该列当前为空,还没有数据
Ps2,该表描述了按时间顺序排列的时代,有一个id、时代名称(如60年代)和时区范围(如1960-1969年)。
日期由用户插入,我想检查它属于哪个年代。好的,您有一个时间戳范围数组作为单个列。可以使用GIN索引索引数组,使用iirc GIN或GiST索引范围。但是,我不确定同时包含这两个属性的列上的索引将如何运行。我想你可以把它建模成一个N维的r-树或者类似的东西
我假设您要检查重叠的范围。您能正常化数据并在每行中有一个范围的链接表吗?如果您只想存储一个范围,那么为什么要使用范围数组?但我不想只存储一个范围。有多个脉络学时代。检查我刚才添加的问题的Ps2部分。谢谢。是的,上面说的是时区范围-这只是一个单一的时间范围me@a_horse_with_no_name好的,Postgresql有两种范围类型。tstzrange[]和tstzrange,第二个没有括号。我应该用第二个吗?有什么区别?感谢这不是两种类型。第一个是范围的=列表,第二个是包含从-到的两个时间戳的单个范围,例如从1960-09-03 18:45:01到1969-03-09 14:38:12,但这是单个范围值。但是,如果您只想存储1960-1969年,那么您可能需要int4rangeHi Richard。对不起,我不明白你到底建议我做什么,我是一个新手,可以发布它的索引和范围。至于我想做什么,请检查我刚才添加到问题中的Ps2部分。谢谢。是的,我现在知道了,我用的是数组而不是时间戳。所以它不能被索引,因为它是一个时间戳数组?