100列vs长度为100的数组

时间:2014-11-27 06:33:48

标签: postgresql

我有一个表格,每行有100多个值,所以我正在探索不同的存储方式。

没有任何索引,如果我将这100个值存储在postgresql的integer[]列中,我会丢失任何内容吗?与将它们存储在单独的列中相比。

另外,因为我们可以为数组elemnet添加索引,

CREATE INDEX test_index on test ((foo[1]));

与列上的常规索引相比,使用这样的索引会产生性能差异查询吗?

据我所知,这种性能差异会在具有可变长度元素的数组中出现;但我不确定固定长度的。

1 个答案:

答案 0 :(得分:0)

不要采取懒惰的方式。 如果你需要将100个或更多的值存储为数组,那么它是正常的,如果它有你的应用程序的数组,你的数据。

如果您需要查询数组的特定元素,那么无论性能如何,此设计都不好,您必须使用列。这将帮助您在必须删除"列"在中间或重新设计它。

无论如何,正如Frank在评论中写的那样,如果值都是相同类型,请考虑将它们建模到另一个表(如果含义相同)。