PostgreSQL中数组类型的大小/长度限制

22

我正在使用PostgreSQL作为数据库进行网站项目的开发。我试图构建一个包括向量空间模型表格的网络数据库结构。

我创建了一个带有属性termsdocId[]的表格,其中docId是术语的文档ID。 docId的类型为integer[]。因此,我可以在一个单一的数组中输入包含该术语的文档列表。但是术语的docId数组可能会包含很多条目。

所以我的问题是:Postgres中一维数组的最大大小是多少?

2个回答

18

5
“必须对行或列大小设置限制,但这将涉及数以百万计的条目”——如果你能原谅一个过分的“事实上”,那么需要说明的是:每个表格的列数有一个硬性限制,最多为1,600个,而该限制包括已删除的列: https://dev59.com/Mmcs5IYBdhLWcg3wu2nS#12612255。 - David Wolever
8
实际上,PostgreSQL的最大字段长度为1GB。因此,如果任何术语具有超过1GB的“文档ID”(->一对多),它将超出PostgreSQL的容量限制。 - Alex

16

我没有发现数组元素数量的限制,但是字段大小有限制。在 PostgreSQL 中,字段的最大大小为 1GB,因此数组中大约只能容纳 268435456 个元素。请注意,对这样的数组进行索引或搜索可能是无用的。


请问您能解释一下为什么会这样吗?为什么索引对于这种数组是无用的?谢谢... - cinfis
1
@cinfis 因为那个索引会非常庞大。实际上,它可能比数据库中的其他部分都要大。 - partlov
3
我在这里试图找出作为函数参数和= ANY子句使用的数组大小的实际限制:如果我的函数接受用于从表中选择行的ID数组,那么如果该数组有成千上万个元素,它会变得非常慢吗? ...我可能应该尝试构建一个临时表或其他东西,而不仅仅是传递一个ID数组... - Sigfried

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接