虽然很容易证明 NULL 在该行的 postgresql 元组标题中仅占用 1 位,但 NULL 在可空列(不是元组,而是索引)的 INDEX 中占用了多少空间?索引中的 1 位是否与元组中的相同,或者是完整列数据类型大小(EG:整数 = 4 字节)?
问题的上下文是我有一个具有 3 个引用列(EG:foo_id、bar_id 和 baz_id)的 postgresql 表,对于任何行,只有其中一个列有值(其他 2 个列将为 NULL)。但是,我需要对所有 3 列进行索引。假设每列是一个整数(在 postgresql 中为 4 个字节),每行应该占用 4 个字节(对于非空列)加上 2 位(对于 2 个空列)。但是,如果我要为所有 3 列添加索引,则 3 个索引的存储空间将是 12 个字节(如果索引占用了空值的全部 4 个字节),或者与元组本身。