【发布时间】:2021-11-30 00:30:13
【问题描述】:
- 我正在使用 Postgres 12.7。
- 我有一张有几千万行的表。其中有三行 bigint[] 数组。我将它们组合成一个数组,我们称之为 bigint_array,它包含大约一到十个数字。
- 我想将此数组与一个临时表进行比较,该表由一个包含 170k 行 bigint 值的列组成。我们称它为 reference_column。
- 理想情况下,我想知道这个路口有多完整。交集是一次点击、多次点击还是整个数组是否以列数表示。
我读到了运算符“&”,它应该计算两个数组的交集。将 reference_column 转换为数组并使用运算符会给我错误“SQL 错误 [42883]:错误:运算符不存在:bigint[] & bigint[]”。嗯。
如果我想要一个初步结果并使用 && 运算符查看 bigint_array 和 array_agg(reference_column) 之间是否有任何重叠,它显然可以工作,但需要几个小时并且不能解决我对重叠完整性进行分类的问题。
你有什么提示吗?有没有办法计算数组与列的交集而不将其转换为数组?
我知道缺少 MWG,如有必要,我会在下班后提供一份。我花了很长时间来创建它们,因为我对 SQL 相当缺乏经验。我希望没有一个很好的提示,但如有必要会更新。对不起,谢谢。
【问题讨论】:
标签: sql arrays postgresql