PostgreSQL中的空间计算与节省我有一张这样的PG桌子:CREATE TABLE t (
a BIGSERIAL NOT NULL, -- 8 b
b SMALLINT, -- 2 b
c SMALLINT, -- 2 b
d REAL, -- 4 b
e REAL, -- 4 b
f REAL, -- 4 b
g INTEGER, -- 4 b
h REAL, -- 4 b
i REAL, -- 4 b
j SMALLINT, -- 2 b
k INTEGER, -- 4 b
l INTEGER, -- 4 b
m REAL, -- 4 b
CONSTRAINT a_pkey PRIMARY KEY (a));上面的加起来相当于每一行50个字节。我的经验是,我需要另外40%到50%的系统开销,甚至没有任何用户创建的索引以上。所以,每一行大约有75个字节。我将在表中有很多行,可能超过1450亿行,所以这个表将推进13-14兆字节。如果有的话,我能用什么技巧来挤这张桌子呢?我下面可能的想法.。转换real值到integer..如果它们可以存储为smallint,即每个字段节省2个字节。转换列b。M变成一个数组。我不需要搜索这些列,但我确实需要能够一次返回一个列的值。所以,如果我需要列g,我可以这样做SELECT a, arr[5] FROM t;我会用数组选项节省空间吗?会有超速罚则吗?还有其他想法吗?
3 回答
慕桂英4014372
TA贡献1871条经验 获得超13个赞
CREATE TABLE WITH column_reorder_ok
WITH column_tetris_ok
. :)
添加回答
举报
0/150
提交
取消