【发布时间】:2014-02-05 12:44:11
【问题描述】:
我有一张带有1.5 MM 记录的表格。每条记录都有一个row number 和一个array,数组中的元素介于1 and 1,000 之间。我正在尝试查找属于较大数组子集的所有数组。
当我使用下面的代码时,我得到 ERROR: statement requires more resources than resource queue allowed (可能是因为有超过一万亿种可能的组合):
select
a.array as dup
from
table a
left join
table b
on
b.array @> a.array
and a.row_number <> b.row_number
除了使用@>之外,有没有更有效的方法来识别哪些数组是其他数组的子集并将它们标记为删除?
【问题讨论】:
-
您是否尝试过在数组列上创建 GIN 索引?
-
我们的数据库不支持 GIN 索引 - 它位于 Greenplum 版本上。
-
如果您想知道与此类数据库相关的 row_number - 它是使用任意顺序手动分配的,但每次我从表中提取数据时总是相同的。跨度>
标签: arrays postgresql greenplum