我有一个包含列和约束的表:
height smallint,
length smallint,
diameter smallint,
volume integer,
idsensorfragments integer,
CONSTRAINT sensorstats_idsensorfragments_fkey FOREIGN KEY (idsensorfragments)
REFERENCES sensorfragments (idsensorfragments) MATCH SIMPLE
ON UPDATE CASCADE ON DELETE CASCADE
(没有主键)。目前有 28 978 112 条记录,但我认为表的大小太大了。
查询结果:
select pg_size_pretty(pg_total_relation_size('sensorstats')), pg_size_pretty(pg_relation_size('sensorstats'))
是:
"1849 MB";"1226 MB"
idsensorfragments列上只有一个索引。使用简单的数学,您可以看到一条记录需要 ~66,7 B (?!?!)。谁能解释一下这个数字是从哪里来的?
5 列 = 2 + 2 + 2 + 4 + 4 = 14 字节。我有一个索引,没有主键。每条记录额外的 50B 来自哪里?
PS 表被抽真空、分析和重新索引。