问题标签 [gist-index]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1977 浏览

postgresql - 错误:数据类型 inet 没有访问方法“gist”的默认运算符类

使用 PostgreSQL 版本9.4.5,我有一个包含一INET列的表。在该列中,我有一个gist索引

这一切似乎都有效:

但是,当我尝试添加EXCLUDE约束时:

我收到以下错误:

0 投票
1 回答
1477 浏览

sql - Postgres:在数组类型的 JSON 字段上设置唯一索引

有一个如下表:

my_field有一个键,它以格式collection存储值:varchar[]

我知道可以为简单的 json 值设置唯一索引。例如,对于{my_field: {name: 'Someone'}},可以设置唯一约束。(已经尝试过了)

我已经尝试exclude using gist了很多,但到目前为止我一无所获。

在这种情况下是否可以设置唯一(考虑重叠)约束?

提前致谢。

0 投票
0 回答
28 浏览

postgresql - 时间范围查询的加速

情况

表 Waypoints 相对较大(150M 行)并且包含(除其他外)列 user_id 和时间戳 tracked_at。

表 Storyline 是一个较小的表(300K 行),其中包含有关时间片段(t_min 到 t_max,也可通过 tsrange segment_time 获得)、user_id 等信息。

目的:将segments表的信息添加到user_id匹配且timestamp在t_range内的points表中(有一个唯一匹配)。

问题:如何在此处使用索引来加快连接速度?

我认为这里有必要,根据是故事情节上 (user_id, t_segment_time) 上的btree_gist索引,或者,如果我使用带有 t_min 和 t_max 而不是范围的查询,则在 (user_id, t_min, t_max DESC 上使用普通索引)。但是,我总是得到一个类似于以下的查询计划:

我理解航点上的顺序扫描(毕竟,我希望所有点都回来),但我觉得索引扫描而不是 Storyline 上的顺序扫描应该快得多。为什么顺序扫描在这里应该更快?如果没有,实现索引扫描需要哪些索引?

编辑: 按照 a_horse_with_no_name 的建议,这里是表的创建语句:

和航点:

Aso 解释分析:我很想这样做,但到目前为止,我在等待超过一天后失去了耐心。我假设如果大表的简单遍历持续 2-3 分钟,那么从一个小得多的其他表中添加唯一的对应项应该最多在几个小时内是可行的。但我可以让它运行更长时间,让你知道结果。

0 投票
0 回答
224 浏览

postgresql - Postgis GIST 索引 - 没有性能提升

我有一个安装了 Postgis 的 Postgres 9.5 数据库。我创建了一个由大约 200 个表组成的物化视图。整个视图包含 3,447,885 条记录。每条记录都有一个几何类型的位置字段。当我查询位置为 ST_Within 边界框的所有记录时,返回 126,630 行需要 15.1 秒。

我在该字段上建立了一个 GIST 索引并运行查询,它仍然需要 15.1 才能返回 126,630 行。

示例查询:

我是否应该在这种尺寸的物化视图上看到显着的性能提升?有什么我可以寻找来表明性能问题的根源吗?

创建索引:

解释分析:

0 投票
1 回答
264 浏览

postgresql - 如何在 PostgreSQL 中为复合类型定义运算符类?

我有一个复合类型。我想对其定义排除约束,这也将与范围排除相结合,但会出现以下错误。



如何为“example_t”复合类型定义运算符类?

0 投票
0 回答
315 浏览

postgresql - Postgres 立方体类型距离向量索引比 seq 扫描慢

具有 128 维列和距离查询如下:

然后我删除了索引,现在它更快了:

任何想法从哪里开始调试?时间差从 100k 行到 1.1M 行。

它是否可能与“高”128 个维度有关?

0 投票
1 回答
65 浏览

postgresql - GiST索引中的索引元组与用户表行之间的关系是多对一还是一对一?

在常规b-tree索引中,叶子节点包含一个键和一个指向heap元组(用户表行)的指针,这表示在 中b-tree,索引元组和用户表行之间的关系是一对一的。

就像在 a中一样b-treeGiST叶节点还包含一个关键数据和有关heap元组存储位置的信息,但叶节点的键中GiST可能包含也可能不包含整个行数据(如果我错了,请纠正我)。因此,如果我能够将表数据的一部分存储在一个叶节点中,另一部分存储在另一个叶节点中,并使它们都指向一个堆元组,这可能吗?这将使GiST索引元组和heap元组之间的关系成为多对一。

这一切都正确吗?

0 投票
1 回答
577 浏览

postgresql - PostgreSQL 上的 GIST 索引创建速度太慢

我在 PostgreSQL 中有一个具有以下结构的数据库:

数据库包含约 146.000.000 条记录,包含数据的表大小为:

我尝试the_geom使用以下命令在几何字段上创建 GIST 索引:

但需要太长时间。它已经运行了2个小时。

基于这个问题Slow indexing of 300GB Postgis table Ask Question,在创建索引之前,我在 psql 控制台中执行:

但是索引创建时间太长了。有谁知道为什么?如何解决这个问题?

0 投票
0 回答
39 浏览

postgresql - 是否可以在排除约束中调用函数以仅返回特定列

我正在尝试实现排除约束,并且我编写了返回多个单独参数(类型:字符变化)的函数。我想要的是调用这个函数两次,但选择不同的列,如下所示:

但我有一个错误

函数应遵循如下逻辑: IF (contract_id + customer_id) is null AND email_address is not null AND vin is not null THEN vin 和 email 在同一级别必须是唯一的。函数应该返回 vin 和 email。这是我的功能:

我的问题是:是否可以调用此函数以仅返回特定列?我看到 GIST 不支持记录类型?

0 投票
1 回答
453 浏览

c# - PostgreSQL exclusion constraints in a bitemporal setting?

I am currently working with a bitemporal application, which stores data entries using 4 timestamps:

The first two state when the given entry is valid_from and valid_to, and the other two are when the entry has been registered_from, and assumed as true until registration_to.

In this time setting I need to make sure that each row has unique column within the same valid_from and valid_to known within the same registration_from and registration_to across multiple entries.

So I need to check every row before insertion (pseudo-code):

I have tried with an exclusion like this:

But I am not sure whether I am using it correctly. I am currently always getting an error, since the check is done in opposite order, and among the incorrect ones. Is there a way to make this exclusion check nested, such that it only check validation overlap if the registration is overlapping, and throws an error if this is true?

How do I go about that in PostreSQL?