我在 Postgres 数据库中有 4 亿行,表有 18 列:
id serial NOT NULL,
a integer,
b integer,
c integer,
d smallint,
e timestamp without time zone,
f smallint,
g timestamp without time zone,
h integer,
i timestamp without time zone,
j integer,
k character varying(32),
l integer,
m smallint,
n smallint,
o character varying(36),
p character varying(100),
q character varying(100)
Run Code Online (Sandbox Code Playgroud)
列e
、k
和n
都是 NULL,它们根本不存储任何值,此时完全没用。它们是原始设计的一部分,但从未被移除。
编辑 - 大多数其他列都是非 NULL。
问题:
如何计算这对存储的影响?它是否等于列的大小 * 行数?
删除这些空列会显着提高该表的性能吗?页面缓存能够容纳更多行吗?
postgresql performance database-design storage disk-space postgresql-performance