2

考虑这个用于存储对象元数据的表

CREATE TABLE meta (
  "obj_uuid"  uuid,
  "type"      int,
  "value"     text
);

使用 s 作为主键来标识对象uuid,元数据行引用uuid. 现在我担心这会成倍地增加数据库的大小。

Postgres 是否会对其自身进行优化,还是创建一个映射uuid到 a的中间表serial并在元数据表中引用此序列号会更好?

4

1 回答 1

3

现在我担心这会成倍地扩大数据库大小

bigint与 64 位或 32 位相比,uuid 只有 128位integer。因此,最坏情况下的开销是密钥空间的 4 倍。

如果您的键/值对非常小并且数量很多,这可能是一个问题。在这种情况下,我将使用基于 a的integeror键,然后仅使用 the作为唯一的辅助键,它不会出现在参照完整性检查中。bigintegersequenceuuid

于 2013-08-22T12:43:35.417 回答